Отладка почты Laravel / Результат

#php #laravel #email

#php #laravel #Адрес электронной почты

Вопрос:

Как я могу увидеть результат или ошибки из методов Mail::send или queue в Laravel? Я использовал dd() для метода, но я получаю либо 0, из которых, как я предполагаю, равно false, чтобы показать, что электронное письмо не удалось отправить. Есть ли какой-нибудь способ перевести его в режим отладки, чтобы я мог видеть, где почтовая программа выходит из строя?

Комментарии:

1. Почтовая программа обычно завершается сбоем с исключением. Скорее всего, это не имеет никакого отношения к PHP. Какой почтовый драйвер вы используете?

2. SMTP с шифрованием TLS. Я использую те же настройки, что и в PHPMailer, которые работают нормально

3. С драйвером SMTP любой сбой должен вызвать немедленное исключение. Возможно ли, что электронные письма просто где-то в спаме?

4. Я уже проверил спам и входящие

5. Находится ли SMTP-сервер под вашим контролем или это что-то вроде Gmail?

Ответ №1:

Для отправки электронной почты используется множество почтовых драйверов, поэтому существует множество способов отладки. Подход заключался бы в том, чтобы установить:

 'driver' => env('MAIL_DRIVER', 'log'),
  

config/mail.php затем быстро проверьте, работает ли ведение журнала почты с:

 Mail::raw('Text to e-mail', function($message)
{
  $message->from('user1@your-domain.tld', 'Laravel');
  $message->to('user2@your-domain.tld');
});
  

Затем, в зависимости от сторонних сервисов и протокола, продолжайте повторять. Например, чтобы использовать SES, нужно заполнить эти ключи среды:

 MAIL_DRIVER='ses'
SES_KEY='XXX'
SES_SECRET='YYY'
SES_REGION='ZZZ'
  

в .env , а затем в config/services.php :

 'ses' => [
    'key' => env('SES_KEY'),
    'secret' => env('SES_SECRET'),
    'region' => env('SES_REGION'),
],
  

Используйте php artisan tinker и тестируйте Mail::raw приведенный выше код. Также обратите внимание, что AWS требует, чтобы его API был подключен по протоколу HTTPS, иначе он не будет отправлять электронную почту.