LINUX.ORG.RU

Отправка писем из Laravel с помощью SMTP через yandex.ru

 , , , ,


0

1

Для теста настроил в системе программу 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

★★★★★

Ответ на: комментарий от foozzi

Я нашел решение тут: 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, и там работает.

Но радость была сразу обломана. На третьем тестовом письме пришел ответ:

Swift_TransportException (554)
Expected response code 250 but got code «554», with message «554 5.7.1 [2] Message rejected under suspicion of SPAM; https://ya.cc/1IrBc 1554298217-yQA0DmBQNo-UGiqbKWi »



В общем, yandex весьма жосток, всех подозревает в спаме. Надо искать какого-то провайдера почты, чтоб позволял писать много, да еще и без имени домена, чтобы отлаживаться на рабочей станции.

Xintrea ★★★★★ ()

465 smtp открывается через ssl видимо MAIL_ENCRYPTION=ssl 587 ssl открывается внутри smtp (STARTTLS) видимо MAIL_ENCRYPTION=tls

при отладке слал сообщения с одного ящика на другой килограммами - ничего не блокировалось

zudwa ()
Ответ на: комментарий от Xintrea

В общем, yandex весьма жосток, всех подозревает в спаме. Надо искать какого-то провайдера почты, чтоб позволял писать много, да еще и без имени домена, чтобы отлаживаться на рабочей станции.

https://laravel.com/docs/5.1/mail#mail-and-local-development

vinvlad ()
Ответ на: комментарий от Xintrea

В общем, yandex весьма жосток, всех подозревает в спаме.

Пользовался ящиком с домена подключенного к яндексу - в прошлом году часто всё тормозило так, что текстовые формы в веб-интерфейсе зависали, а smtp или imap отваливались по таймауту. По smtp письма часто не посылались с ответом, что ящик того домена(отправитель или получатель) превысил лимиты, хотя через веб всё посылалось.

Ну и не совсем по теме - письма пропадают. В журнале есть записи о перемещении в корзину, а потом сразу о удалении, будто какой-то скрипт создания/удаления черновиков при работе в веб-интерфейсе удалил не черновик, а письмо выше по цепочке. И даже, если заметишь - ТП не будет восстанавливать,

boowai ()
Ответ на: комментарий от boowai

«всё тормозило так, что текстовые формы в веб-интерфейсе зависали» - потому что отправлять надо письма асинхронно (то есть даешь юзеру ответ типа все ок, а отправку уже в фоновом режиме делаешь), чтобы на интерфейсе это вообще не отражалось. И тут не важно, через яндекс шлешь или еще как - подход этот везде одинаков. Если я, конечно, правильно вас понял.

dimuska139 ()
Ответ на: комментарий от dimuska139

Я про самого яндекса почтовый веб-интерфейс - наверно он старается держать актуальный черновик письма. Для этого отправляет каждый набираемый символ яндексу. И похоже это было в какой-то мере синхронно, раз зависало всё. В легкой версии такого не было, но при самой отправке тоже могло зависнуть до отвала.

Вообще наблюдаю тормоза и на некоторых других их сервисах, но не до такой степени.

boowai ()