2011-03-03 3 views
1

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

ответ

6

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

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

+0

Благодаря @Marc B чтения - я не имеют доступ к/var/log на этом сервере, что является болью. Я попробую и получить доступ к кому-нибудь, чтобы получить содержимое журнала, а затем оттуда оттуда. – tferdo

1

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

+0

Как упоминалось выше в Marc, я попытаюсь получить содержимое журнала сообщений, и, надеюсь, там будет ключ. Все, что я вижу на данный момент, это то, что исключение Swift_ConnectionException генерируется с этой общей ошибкой. Я только что нашел это, что может помочь: Swift_Plugins_AntiFloodPlugin - http://swiftmailer.org/docs/antiflood-plugin-howto – tferdo

3

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

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

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

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

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

Это последнее средство, и мы говорим, что с пасси на!

Кроме того, на той же странице, он также объясняет, как обращаться информационные бюллетени просто итерацию над полевым вместо секции Отправка сообщений электронной почты в пакетном на той же странице