У меня есть система, которая отправляет множество сообщений по электронной почте (около 500 адресов электронной почты в день). Я не спамер :) Это не очень большое количество электронных писем, но они отправляются в цикле, и я часто получаю эту ошибку «PHP Warning: mail(): не удалось выполнить программу доставки почты». Я знаю, что для этой проблемы есть пакет PEAR :: Mail_Queue. Но можете ли вы сообщить мне, действительно ли этот пакет полезен, или мне нужно искать что-то еще. Большое спасибоотправка большого количества электронной почты в цикле
ответ
Вы должны использовать sleep() между письмами, что решает это.
Альтернативой может быть также отправка почты через SMTP-сервер напрямую. Это экономит вам поездку на PHP по вызову sendmail (или любой другой MTA) «через оболочку», чтобы доставить почту. Например, Zeta Mail component позволяет отправлять письма непосредственно через SMTP-сервер, не требуя для этого специального расширения.
"PHP Предупреждение: почта(): Не удалось выполнить почтовую программу поставки"
... означает именно то, что он говорит по олову. PHP будет просто отсылать электронную почту во внешнюю программу в системе Linux/Unix/POSIX (как определено sendmail_path в php.ini). И в некоторых случаях это возвращает ошибку. Это не ошибка в PHP-коде.
Если у вас плохо настроенный MTA, проблема не будет решена с использованием SMTP-соединения.
Вам нужно посмотреть журналы из вашего MTA, чтобы узнать, почему его отказ отправить почту - или обернуть исполняемый файл почты в сценарии ведения журнала.
Вы можете использовать PEAR's Mail_Queue package для отправки писем через SMTP-сервер напрямую - также он будет работать в фоновом режиме и поэтому не задержит или не увеличит время выполнения вашего скрипта.
Еще одно преимущество использования пакета Mail_Queue заключается в том, что вы можете получить идентификатор esmtp для каждого отправленного сообщения для ведения журнала - я не знаю, возможно ли это с компонентом Zeta Mail или любым другим.
Я разработал ряд общедоступных, а также интранет-решений, которые используют этот компонент и не имеют серьезных проблем с ним.
- 1. отправка большого количества электронной почты в модуль бюллетеня
- 2. Отправка большого количества писем электронной почты из Google вычислительного движка
- 3. Отправка огромного количества электронной почты с SMTP
- 4. Отправка большого количества писем с веб-сервера
- 5. Отправка 2000 сообщений электронной почты
- 6. Отправка электронной почты электронной почты ELMAH вручную
- 7. Отправка электронной почты без адреса электронной почты?
- 8. Отправка большого вложения почты - ZF2
- 9. Отправка большого количества писем пакетами
- 10. Отправка большого количества данных сервлету
- 11. Отправка большого количества данных POST
- 12. Отправка массовой электронной почты в ASP.NET
- 13. Отправка электронной почты пользователю
- 14. Отправка сообщения электронной почты
- 15. Автоматическая отправка электронной почты
- 16. Отправка сообщения электронной почты
- 17. Codeigniter - Отправка электронной почты
- 18. Отправка электронной почты WCS
- 19. Отправка электронной почты
- 20. Отправка электронной почты CPanel
- 21. SMTP: Отправка электронной почты
- 22. Отправка сообщения электронной почты
- 23. IIS7 - отправка электронной почты
- 24. отправка зашифрованной электронной почты
- 25. Отправка электронной почты gmail
- 26. Отправка электронной почты автоматически
- 27. ASP.Net - отправка электронной почты
- 28. Отправка электронной почты CDO
- 29. Отправка основной электронной почты
- 30. ASP.NET- Отправка электронной почты
Спасибо за ваш ответ. Но я боюсь, что это увеличит время выполнения скрипта, не так ли? – alagar
Heya mate, это добавит немного времени на выполнение, но оно не будет рассчитывать на максимальное время выполнения. Так что за 500 писем один раз в день или даже 5000 это не имело бы значения. –