#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, иначе он не будет отправлять электронную почту.