У меня есть сценарий информационного бюллетеня, который перебирает участников и отправляет письмо каждому индивидуально. раньше это работало нормально, но по мере увеличения числа скрипт начал давать сбой на полпути. Я использую SwiftMailer, и я получаю сообщение: «Отправка не удалась с использованием почты () в качестве почты PHP по умолчанию ()». Будет ли какая-либо польза от попытки отправки с помощью SMTP вместо встроенной функции mail()? Или я должен искать другое решение. Спасибо за любые указатели.
Справка по электронной почте - php mail() или SMTP
Ответы (3)
На самом деле функция mail()
не доставляет почту. Он просто передает сгенерированную вами почту на SMTP-сервер системы. В любом случае вы будете использовать SMTP.
Если swiftmailer использует функцию PHP mail(), то, скорее всего, что-то пошло не так с настройкой SMTP в вашей системе. Проверьте системные журналы (в частности, почтовый журнал) на наличие подсказок и посмотрите, даст ли Swiftmailer какие-либо более точные сообщения об ошибках.
Согласно предложениям умного человека, разработавшего Swiftmail и, вероятно, ломал голову над этими вопросами (чтобы вы и я не делали то же самое), это может помочь вам использовать SMTP, а не mail
транспорт
По моему опыту — и другим — функция mail() не особенно предсказуема или полезна.
Примечательно, что функция mail() ведет себя совершенно по-разному на серверах Linux и Windows. В Linux используется sendmail, а в Windows — SMTP. ...
Серьезными недостатками при использовании этого транспорта являются:
- Непредсказуемые заголовки сообщений
- Отсутствие обратной связи о сбоях доставки
- Отсутствие поддержки нескольких плагинов, требующих обратной связи о доставке в режиме реального времени.
Это крайняя мера, и мы говорим это со страстью!
Более того, на той же странице он также объясняет, как обрабатывать информационные бюллетени, просто перебирая поле «Кому» вместо чтения раздела Пакетная отправка электронных писем на той же странице.
Функция mail()
отправляет электронную почту с помощью SMTP. Однако вы можете попробовать что-то вроде PEAR::Mail
. Использование mail()
откроет новое SMTP-соединение для каждого сообщения, что довольно неэффективно в цикле. Это вполне может быть причиной ваших ошибок, хотя с таким общим сообщением об ошибке невозможно быть уверенным без дополнительных копаний.