Laravel притворяется, что не показывает адрес электронной почты cc

У меня было изменение pretend, как true в почтовом конфигурации. пожалуйста, проверьте http://laravel.com/docs/4.2/mail#mail-and-local-development

Теперь журнал показывает, как это делается.

[2014-11-22 17:12:49] production.INFO: Pretending to mail message to: [removed_email], [removed_email] [] []

Но мне нужно также отлаживать электронные письма cc. Как мне это сделать?

Это мой код.

Mail::send($view, $data, function($message) use ($to, $cc, $subject)
{ foreach ($to as $toUser) { $message->to($toUser['email'], $toUser['first_name'] . ' ' . $toUser['last_name']); } foreach ($cc as $ccUser) { $message->cc($ccUser['email'], $ccUser['first_name'] . ' ' . $ccUser['last_name']); } $message->subject($subject);
});
2 ответа

Позвольте мне быть откровенным здесь. Я новичок в Laravel, но я постараюсь изо всех сил объяснить это.

Я знаю, как отлаживать почтовые платформы, но самый простой процесс - это сделать через C.

Я постараюсь быть сукцином, насколько это возможно.

Во-первых, попробуйте использовать laravel-debugbar (последняя версия - 4). Это приложение, которое позволяет фильтровать панель отладки PHP. Используя это приложение, вы сможете подключать и редактировать выходные функции (вот ссылка для получения дополнительной информации: панель отладки.

Если это не сработает, попробуйте выполнить отладку через C.

Неправильно, вы скомпилируете программу C, вставив опцию debug, -g. После этого вы запустите gdb в платформу. В-третьих, вы сломаете точку в программе C, в частности, вставьте функцию break_number break. После этого вы будете печатать значения переменных в отладчике gdp.

Например, вы будете вводить команды, такие как print j и (gdp) pi (я опубликую веб-сайт, на котором у меня есть эта информация, это даст вам более широкое пошаговое руководство).

Для этого процесса существуют различные операции. Я настоятельно рекомендую вам посетить программу Debug C, используя gdb. Надеюсь, это помогло.


Создайте новый класс с именем ExtendedMailer ради этого примера и сохраните файл где-нибудь, где автозагрузчик сможет его найти. В зависимости от того, где вы помещаете файл, вам может потребоваться запустить composer dump-autoload после его сохранения.

<!--?php
use Illuminate\Mail\Mailer;
class ExtendedMailer extends Mailer
{ protected function logMessage($message) { parent::logMessage($message); $emails = implode(', ', array_keys((array) $message--->getCc())); $this->logger->info("Pretending to mail message to: {$emails}"); }
}

Создайте нового поставщика услуг, где-то ваше приложение может загружать классы. Как и выше, вам может потребоваться запустить composer dump-autoload

Нижеприведенный код просто расширяет исходный MailServiceProvider, но позволяет нам связать другой класс с IoC, вы увидите new ExtendedMailer; класс, который мы создали ранее. Очевидно, если вы назвали класс, отразите это изменение здесь.

<!--?php
use Illuminate\Mail\MailServiceProvider;
class ExtendedMailServiceProvider extends MailServiceProvider
{ /** * Register the service provider. * * @return void */ public function register() { $me = $this; $this--->app->bindShared('mailer', function($app) use ($me) { $me->registerSwiftMailer(); // Once we have create the mailer instance, we will set a container instance // on the mailer. This allows us to resolve mailer classes via containers // for maximum testability on said classes instead of passing Closures. $mailer = new ExtendedMailer( $app['view'], $app['swift.mailer'], $app['events'] ); $this->setMailerDependencies($mailer, $app); // If a "from" address is set, we will set it on the mailer so that all mail // messages sent by the applications will utilize the same "from" address // on each one, which makes the developer life a lot more convenient. $from = $app['config']['mail.from']; if (is_array($from) && isset($from['address'])) { $mailer->alwaysFrom($from['address'], $from['name']); } // Here we will determine if the mailer should be in "pretend" mode for this // environment, which will simply write out e-mail to the logs instead of // sending it over the web, which is useful for local dev environments. $pretend = $app['config']->get('mail.pretend', false); $mailer->pretend($pretend); return $mailer; }); }
}

В вашем config/app.php вы найдете строку, которая выглядит как

'Illuminate\Mail\MailServiceProvider',

Вам нужно будет прокомментировать это и добавить строку, как показано ниже.

'ExtendedMailServiceProvider',

Это означает замену почтовой программы, о которой знает Laravel, с тем, что вы только что создали. Тот, который вы только что создали, такой же, как и по умолчанию, поскольку он просто расширяет его и добавляет функции функции logMessage.

licensed under cc by-sa 3.0 with attribution.