Почта Laravel делает вид, что ничего не печатает


Я установил 'pretend' => true, в mail.php, создал это new.php представление:

<body>
    <div>
        E-mail: {{ $user->email }}<br>
        User: {{ $user->username }}<br>
        Pass: {{ $user->password }}<br>
    </div>
</body>

Затем в моем контроллере я использую этот код для "отправки" почты:

$data['user'] = $user;
Mail::send('emails.new', $data, function($message) use ($user)
{
    $message->to('[email protected]', $user->username)->subject('Account');
});

Вывод в файле журнала только такой:

[2013-08-30 11:27:56] журнал.ИНФОРМАЦИЯ: Притворяясь, что отправляю сообщение по почте: [email protected] [][]

Я попробовал использовать полное представление HTML, а также другое представление, которое содержит только строки, без переменных, но результат тот же.

Так ли это должно быть работать? Разве он не должен печатать все сообщение, заголовок и т. Д.? Есть ли проблема с кодом или это правильный вывод?

Author: totymedli, 2013-08-30

5 answers

Если вы установите 'pretend' => true в app/config/mail.php, то почта никогда не отправляется, вы получаете только сообщение в журнале, например:

[2014-07-17 14:15:07] production.INFO:
    Pretending to mail message to: [email protected] [] []

Однако, если вы оставите 'pretend' => false и вместо этого используете драйвер log ('driver' => 'log', доступный с Laravel 4.2), то вместо отправки почты вы получите все содержимое почты, записанное в журнал:

[2014-07-17 14:15:14] production.DEBUG:
    Message-ID: <[email protected]>

Date: Thu, 17 Jul 2014 14:15:15 +0000

Subject: Welcome!
From: Ahmad <[email protected]>
To: John Smith <[email protected]>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable


    Order confirmed!

 [] []
 65
Author: Daniel Pelsmaeker, 2015-08-12 08:53:21

Если вы действительно хотите просмотреть содержимое сообщения (например, при проверке электронной почты для проверки учетной записи пользователя или сброса пароля) в файле журнала /хранилище/журналы; Вы можете изменить локальную копию vendor/laravel/framework/src/Illuminate/Mail/Mailer.php и в функции logMessages измените ее так, чтобы она выглядела как

protected function logMessage($message)
{
    $emails = implode(', ', array_keys((array) $message->getTo()));
    $body = $message->getBody();
    $this->logger->info("Pretending to mail message to: {$emails} :-: {$body}");
}

Затем вы увидите текст сообщения в журналах.

 10
Author: sirtimbly, 2013-11-01 20:16:17

Это нормальное поведение pretend в почтовой системе Laravel. Он нигде не отобразит ваше сообщение, даже в журнале, он просто зарегистрирует, что почтовое сообщение было притворно отправлено. Посмотрите на соответствующий исходный код:

/**
 * Send a Swift Message instance.
 *
 * @param  Swift_Message  $message
 * @return void
 */
protected function sendSwiftMessage($message)
{
    if ( ! $this->pretending)
    {
        return $this->swift->send($message);
    }
    elseif (isset($this->logger))
    {
        $this->logMessage($message);
    }
}

/**
 * Log that a message was sent.
 *
 * @param  Swift_Message  $message
 * @return void
 */
protected function logMessage($message)
{
    $emails = implode(', ', array_keys($message->getTo()));

    $this->logger->info("Pretending to mail message to: {$emails}");
}
 8
Author: Antonio Carlos Ribeiro, 2013-08-30 12:21:03

Я включаю это в свои обратные вызовы для отправки:

Mail::send(array('emails.html','emails.text'),$data,function($message) use($data)
{
   //Set $message data
   if(Config::get('mail.pretend')) Log::info(View::make('emails.html',$data)->render());
}

Кроме того, вы можете передать визуализацию представлений в другое представление, чтобы просмотреть html-код, отображаемый в вашем браузере.

 6
Author: foolishoptimist, 2014-03-20 02:14:19

Я создал пакет, который также включает тему и тело для laravel 4.2.

Пакет можно найти здесь: https://packagist.org/packages/peercode/mail

Просто включите пакет, как описано здесь: https://github.com/peercode-eric/laravel-maillog и журнал будет содержать дополнительную информацию.

 1
Author: redsd, 2014-11-11 13:40:41