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.