Пришлось намедни настройки Яндекс-почту для проект ана Laravel и хотел бы поделиться опытом настройки, возможно кому-то пригодится материал.
Генерация пароля приложений для SMTP Яндекс — почты
Переходим в свой почтовый ящик и выбераем пункт «Почтовые программы». В данном разделе нужно проставить галочку рядом с пунктом «С сервера imap.yande.ru по протоколу IMAP». В способе авторизации оставляем галочку только напротив пункта «Пароли приложений и OAuth-токены»
Далее открываем страницу «Управление аккаунтом» и в разделе «Пароли и авторизации» создаем новый пароль для входа в сторонние программы. В высветившимся окне подтверждаем действие, нажав на кнопку «Включить пароли приложений»
Чтобы создать пароль для приложения, введим пароль для своего аккаунта и он не будет передаваться сторонним сервисам
В типе приложений выбераем «Почта» и введите название для пароля. Мы вводим название сервиса, чтобы не путаться. Затем нажмите на кнопку «Создать»
Нам автоматом будет сгенерирован новый пароль и нужно его использовать, как «Пароль SMTP» и «Пароль IMAP» при задании параметров в .env Laravel
Настройка параметров .env в Laravel
Дам сразу пример правильно заполненных параметров и в этом нет ничего сложно. Просто надо прописать нужные данные для нужных перменных
...
MAIL_MAILER=smtp
MAIL_HOST=smtp.yandex.com
MAIL_PORT=587
MAIL_USERNAME=mylogin@yandex.ru
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mylogin@yandex.ru
MAIL_FROM_NAME="${APP_NAME}"
...
Список возможных ошибок
Приведу ниже 2 вида ошибок, которые мне встретились при настройке, чтобы при поиске вы попали сюда:
первая ошибка связана с тем, что модуль не может соединиться с сервером почты yandex
{message: "Connection to tcp://smtp.yandex.com:465 Timed Out", exception: "Swift_TransportException",…}
exception: "Swift_TransportException"
file: "/var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php"
line: 475
message: "Connection to tcp://smtp.yandex.com:465 Timed Out"
вторая ошибка связана с тем, что есть доступ к хосту, но сервер не может обработать отправку сообщения
config/mail.php
, т.е. парметр MAIL_FROM_ADDRESS=myname@yandex.ru
нужно указать реальный в файле .env
, желательно относящийся к домену *@yandex.ru
exception: "Swift_TransportException"
file: "/var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php"
line: 459
message: "Expected response code 250 but got code \"553\", with message \"553 5.7.1 Sender address rejected: not owned by auth user. 1656960714-utTzdALh0H-psRmqtSH\r\n\""