Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Для теста настроил в системе программу ssmtp, чтобы проверить как будет уходить почта через почтовый сервер yandex.ru. Настройки следующие:
root=***@yandex.ru
mailhub=smtp.yandex.ru:465
rewriteDomain=yandex.ru
hostname=yandex.ru
AuthUser=***
AuthPass=***
UseTLS=YES
И с этими настройками почта отправляется.
Теперь пробую использовать такие же настройки в Laravel. В файле .env прописано:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=465
MAIL_USERNAME=***
MAIL_PASSWORD=***
MAIL_ENCRYPTION=tls
Однако, при отправке почты происходит ошибка:
Swift_TransportException
Connection to tcp://smtp.yandex.ru:465 Timed Out
Я пробовал другие комбинации порта и шифрования, но они тоже не работают:
465, ssl:
Swift_TransportException (553)
Expected response code 250 but got code "553", with message "553 5.7.1 Sender address rejected: not owned by auth user. "
587, ssl:
Swift_TransportException
Connection could not be established with host smtp.yandex.ru [ #0]
587, tls:
Swift_TransportException (553)
Expected response code 250 but got code "553", with message "553 5.7.1 Sender address rejected: not owned by auth user. "
Вопрос. Как заставить работать почту в Laravel через smtp?
UPD: Еще я пробовал поставить такую настройку:
MAIL_DRIVER=mail
Все остальные значения MAIL_* приравнял null. Сделал я это
в надежде, что стработает PHP-шная функция mail(), которая у меня работает с помощью настроенного ssmtp. Например, такой код работает:
<?php
mail("sample@gmail.com", "Отправка через SSMTP агента", "Это проверка отправки");
?>
Но после этой настройки и сброса кеша настроек:
$ ./artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
Попытка отправки почты завершается ошибкой:
Swift_TransportException
Expected response code 220 but got an empty response
Не в сети
Попробуй порт 587
MAIL_PORT=587
У меня так работало
Не в сети
Так я же написал:
587, ssl:
Swift_TransportException
Connection could not be established with host smtp.yandex.ru [ #0]
587, tls:
Swift_TransportException (553)
Expected response code 250 but got code "553", with message "553 5.7.1 Sender address rejected: not owned by auth user. "
Не работает 587 порт.
Но еще не понятно, почему драйвер MAIL_DRIVER=mail работать не хочет, хотя простой тестовый PHP-код письмо отправляет.
Не в сети
Это результат того, что не указан/неправильно указан обратный адрес
Яндекс требует чтобы почта отправлялась с его реального адреса, а если вы не указали его явно, ларавель подставит там свою заглушку
config/mail.php
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
Поэтому провпишите явно свой адрес в .env
MAIL_FROM_NAME="My Name"
MAIL_FROM_ADDRESS=myname@yandex.ru
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Ага, я наконец нашел такое же решение тут: https://toster.ru/q/302144
В итоге настройки стали такими:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=587
MAIL_USERNAME=sample@yandex.ru
MAIL_PASSWORD=somePassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=sample@yandex.ru
MAIL_FROM_NAME=sample
Самое интересное, что не работает с портом 465, хотя с ним я проверяю работу через ssmtp, и там работает. Объяснения этому у меня нет. Прямо магия какая-то творится в компьютерных науках.
Не в сети
Почтовый сервер-сателлит Яндекса на базе ОС Debian и Postfix
Изменено hzone (12.04.2019 19:43:51)
Не в сети