Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день всем!
В ларавеле осуществляю рассылку писем посредством драйвера mail.
Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.
Сам почтовый сервер в логах не выдает ошибок и очереди на отправку нет.
Возможна настройка, чтобы такие ящики игнорировались и на правильные адреса уходило сообщение?
Не в сети
Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.
насколько он неверный? в плане формата неверный? потому что если все адреса валидные, то драйвер mail просто передаёт письмо в системный почтовик и доставка – это уже его проблемы. если там сам адрес не является адресом, то наверное где-то нужна валидация перед тем как вообще добавлять адрес в систему. накрайняк, если уже там куча мусора – перед отправкой можно отфильтровать мусор из списка, например с помощью array_filter и filter_var
Не в сети
Но есть проблема, после указания нескольких адресов получателя, и, если один из них не существует, письма не уходят вообще никому.
насколько он неверный? в плане формата неверный? потому что если все адреса валидные, то драйвер mail просто передаёт письмо в системный почтовик и доставка – это уже его проблемы. если там сам адрес не является адресом, то наверное где-то нужна валидация перед тем как вообще добавлять адрес в систему. накрайняк, если уже там куча мусора – перед отправкой можно отфильтровать мусор из списка, например с помощью array_filter и filter_var
Адрес полностью валидный. Имеется ввиду почта несуществующая. Если в массиве, скажем, из 5 писем один не является реальным, то остальным четырем адресатам письма не уходят. Если драйвер почтового сервера поставить в log, то видим в списке адресатов все 5 адресов с текстом письма. Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?
Не в сети
Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?
Нет, узнать о существовании почтового адреса (в общем случае) невозможно.
Некоторые почтовые сервисы предоставляют свое специальное АПИ с помощью которого можно как-то сделать выводы о том, есть ли такой ящик вообще, но в общем случае узнать о существовании адреса нельзя. Можно только пропинговать домен-порт и убедиться, что он в принципе существует.
Не в сети
- Возможно, что сам почтовый сервер настроен таким образом, что сначала проверяет адреса, и если какой-нибудь не существует, не рассылает всю цепочку?
Вы же наверняка отправляете не всем получателям сразу (т.е. копии письма через поля To/CC/BCC), а поодиночке каждому. В таком случае почтовый сервер и не знает всех получателей.
Даже в случае с неверными адресами в To/CC/BCC сервера не отклоняют письмо, а пропускают такие адреса и потом высылают обратно отправителю письмо типа mail delivery failed, где перечислены проблемные адреса и причины недоставки. Скорее всего у вас проблема где-то в коде, либо используется какой-то особо хитрый почтовый сервер (это косвенно подтверждается тем, что вы не получаете никаких ошибок — скорее всего до сервера ваше письмо вообще не доходит).
- Нет, узнать о существовании почтового адреса (в общем случае) невозможно.
Иногда можно — обычно сервера отвечают, существует получатель или нет, до того, как ты отправляешь тело письма. Поэтому можно открыть новую сессию по SMTP, отправить TO и если сервер не выдал ошибку — вероятно, адрес есть. Но действительно, полагаться на это нельзя (это поведение могут отключить для противодействия спамерам и перебору логинов), максимум, что можно сделать — проверить порт в MX-записях домена.
Не в сети
Страницы 1