отправка большого количества писем в цикле - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть система, которая отправляет множество отчетов по электронной почте (более 500 писем в день).Я не спамер :) Это не очень большое количество писем, но они отправляются в цикле, и я часто получаю эту ошибку «Предупреждение PHP: mail (): Не удалось выполнить программу доставки почты».Я знаю, что есть пакет PEAR :: Mail_Queue для этой проблемы.Но не могли бы вы сообщить мне, действительно ли этот пакет действительно полезен, или мне нужно поискать что-то еще?Большое спасибо

Ответы [ 4 ]

2 голосов
/ 01 марта 2011

Вы можете использовать Пакет PEAR Mail_Queue для прямой отправки почты через SMTP-сервер - также он будет работать в фоновом режиме и не будет задерживать или увеличивать время выполнения вашего скрипта.

Еще одним преимуществом использования пакета Mail_Queue является то, что вы можете получить идентификатор esmtp для каждого письма, отправленного для целей регистрации - я не знаю, возможно ли это с компонентом Zeta Mail или любым другим.

Я разработал ряд общедоступных, а также только интранет-решений, которые используют этот компонент и не имеют каких-либо серьезных проблем с ним.

1 голос
/ 28 февраля 2011

«Предупреждение PHP: mail (): не удалось выполнить программу доставки почты»

... означает именно то, что написано на банке.PHP просто передает электронную почту внешней программе в системе Linux / Unix / POSIX (как определено sendmail_path в php.ini).И в некоторых случаях это возвращает ошибку.Это не ошибка в PHP-коде.

Если у вас не очень плохо настроенный MTA, проблема не будет решена с помощью SMTP-соединения.

Вам нужно посмотретьв журналах вашего MTA, чтобы увидеть, почему не удается отправить почту, или оберните исполняемый файл почты в сценарий регистрации.

0 голосов
/ 28 февраля 2011

Альтернативой также может быть отправка почты напрямую через SMTP-сервер.Это избавит вас от необходимости вызова PHP через sendmail (или любой другой используемый MTA) «через оболочку» для доставки почты.Например, компонент Zeta Mail позволяет отправлять почту напрямую через SMTP-сервер без специального расширения для этого.

0 голосов
/ 28 февраля 2011

Вы должны использовать sleep () между письмами, что решает эту проблему.

...