Справка по электронной почте - php mail () или SMTP - PullRequest
2 голосов
/ 03 марта 2011

У меня есть скрипт новостной рассылки, который просматривает участников и отправляет каждому из них письмо. Раньше все работало нормально, но по мере того, как их число увеличивалось, сценарий начал падать на полпути. Я использую SwiftMailer и получаю сообщение «Не удалось отправить с использованием mail () как mail () по умолчанию в PHP». Будет ли какая-то польза от попыток отправки с SMTP вместо встроенной функции mail ()? Или я должен искать другое решение. Спасибо за любые указатели.

Ответы [ 3 ]

6 голосов
/ 03 марта 2011

Функция mail() на самом деле не доставляет почту. Он просто передает сгенерированную вами почту на SMTP-сервер системы. В любом случае, вы собираетесь использовать SMTP.

Если swiftmailer использует функцию PHP mail (), то, скорее всего, что-то пошло не так с настройкой SMTP вашей системы. Проверьте системные журналы (в частности, почтовый журнал) на наличие подсказок и посмотрите, не выдаст ли Swiftmailer какие-либо лучшие сообщения об ошибках.

4 голосов
/ 25 февраля 2013

Согласно предложениям умного парня, который разработал Swiftmail и, вероятно, ударил его по этим вопросам (чтобы вы и я не делали то же самое), это может помочь вам использовать SMTP ине mail транспорт

По моему опыту - и другим - функция mail () не особенно предсказуема или полезна.

Примечательно, что mail ()Функция ведет себя совершенно по-разному между серверами Linux и Windows.В Linux он использует sendmail, а в Windows - SMTP....

Серьезными недостатками при использовании этого транспорта являются:

  • Непредсказуемые заголовки сообщений
  • Отсутствие обратной связи относительно сбоев доставки
  • Отсутствие поддержкидля нескольких плагинов, которые требуют обратной связи о доставке в режиме реального времени

Это последнее средство, и мы говорим об этом со страстью!

Более того, на той же странице он также объясняет, какдля обработки новостных рассылок, просто перебирая поле to, вместо этого читайте раздел Отправка писем в пакетном режиме на той же странице

1 голос
/ 03 марта 2011

Функция mail() отправляет электронную почту с SMTP.Вы можете попробовать что-то вроде PEAR::Mail, однако.Использование mail() откроет новое SMTP-соединение для каждого сообщения, что довольно неэффективно в цикле.Это вполне может быть причиной ваших ошибок, хотя с таким общим сообщением об ошибке невозможно быть уверенным, если вы не покопаетесь.

...