Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.03.2017 18:26:11

Не рассылает письма с одним неверным адресом

Добрый день всем!
В ларавеле осуществляю рассылку писем посредством драйвера mail.
Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.
Сам почтовый сервер в логах не выдает ошибок и очереди на отправку нет.
Возможна настройка, чтобы такие ящики игнорировались и на правильные адреса уходило сообщение?

Не в сети

#2 03.03.2017 05:58:59

Re: Не рассылает письма с одним неверным адресом

Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.

насколько он неверный? в плане формата неверный? потому что если все адреса валидные, то драйвер mail просто передаёт письмо в системный почтовик и доставка – это уже его проблемы. если там сам адрес не является адресом, то наверное где-то нужна валидация перед тем как вообще добавлять адрес в систему. накрайняк, если уже там куча мусора – перед отправкой можно отфильтровать мусор из списка, например с помощью array_filter и filter_var

Не в сети

#3 07.03.2017 17:03:43

Re: Не рассылает письма с одним неверным адресом

constb пишет:

Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.

насколько он неверный? в плане формата неверный? потому что если все адреса валидные, то драйвер mail просто передаёт письмо в системный почтовик и доставка – это уже его проблемы. если там сам адрес не является адресом, то наверное где-то нужна валидация перед тем как вообще добавлять адрес в систему. накрайняк, если уже там куча мусора – перед отправкой можно отфильтровать мусор из списка, например с помощью array_filter и filter_var

Адрес полностью валидный. Имеется ввиду почта несуществующая. Если в массиве, скажем, из 5 писем один не является реальным, то остальным четырем адресатам письма не уходят. Если драйвер почтового сервера поставить в log, то видим в списке адресатов все 5 адресов с текстом письма. Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?

Не в сети

#4 08.03.2017 02:57:40

Re: Не рассылает письма с одним неверным адресом

Fridz пишет:

Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?

Нет, узнать о существовании почтового адреса (в общем случае) невозможно.
Некоторые почтовые сервисы предоставляют свое специальное АПИ с помощью которого можно как-то сделать выводы о том, есть ли такой ящик вообще, но в общем случае узнать о существовании адреса нельзя. Можно только пропинговать домен-порт и убедиться, что он в принципе существует.

Не в сети

#5 08.03.2017 12:13:58

Re: Не рассылает письма с одним неверным адресом

  1. Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?

Вы же наверняка отправляете не всем получателям сразу (т.е. копии письма через поля To/CC/BCC), а поодиночке каждому. В таком случае почтовый сервер и не знает всех получателей.

Даже в случае с неверными адресами в To/CC/BCC сервера не отклоняют письмо, а пропускают такие адреса и потом высылают обратно отправителю письмо типа mail delivery failed, где перечислены проблемные адреса и причины недоставки. Скорее всего у вас проблема где-то в коде, либо используется какой-то особо хитрый почтовый сервер (это косвенно подтверждается тем, что вы не получаете никаких ошибок — скорее всего до сервера ваше письмо вообще не доходит).

  1. Нет, узнать о существовании почтового адреса (в общем случае) невозможно.

Иногда можно — обычно сервера отвечают, существует получатель или нет, до того, как ты отправляешь тело письма. Поэтому можно открыть новую сессию по SMTP, отправить TO и если сервер не выдал ошибку — вероятно, адрес есть. Но действительно, полагаться на это нельзя (это поведение могут отключить для противодействия спамерам и перебору логинов), максимум, что можно сделать — проверить порт в MX-записях домена.

Не в сети

Подвал раздела