Вопрос

Каков наиболее правильный способ отправки электронных писем объемом не менее 1000 или более на PHP?Есть ли надежная техника организации очереди электронной почты, которая способна справиться с этим?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Это было полезно?

Решение

Вы можете просто вставить свои электронные письма в таблицу базы данных Mail Queue, а затем отдельный процесс проверит очередь и одновременно отправит пакетную отправку определенного числа.

Другие советы

Для этого есть проверенное решение:ГРУША Mail_Queue

У меня работает нормально.

как предложил Меркуцио, я бы вставил новую запись в таблицу почтовой очереди для каждого электронного письма, ожидающего отправки, а затем использовал отдельный процесс (например, CRON) для периодической проверки таблицы на наличие любых элементов в очереди.

если какие-либо электронные письма поставлены в очередь (и электронное письмо не настроено для каждого получателя), я бы затем сгруппировал электронные письма по домену и отправил блоки вместе, чтобы уменьшить общее количество писем, которые необходимо отправить, т.е.Если у вас есть 1000 электронных писем в очереди, а 250 - на учетные записи Gmail, я бы отправил 250 в 25 блоках по 10 (помните получателям скрытой копии, чтобы они не видели друг друга).

чтобы на самом деле отправить почту, я бы использовал ГРУША почта через функцию PHP mail()

после отправки электронного письма либо удалите записи из очереди, либо измените флаг состояния, чтобы показать, что оно было отправлено, и зациклитесь - я бы также добавил счетчик для отслеживания электронных писем, которые не удалось отправить, и удалил их после x неудачных попыток.

Чтобы преодолеть проблемы с временем, я бы тоже, (в зависимости от ситуации) - установить set_time_limit () на x секунд и отслеживать время выполнения скрипта (убийство сценария после (x -1) секунд) - вызовите сценарий из команды Строка, чтобы избежать тайм -аутов - установите ограничение на количество электронных писем, которые сценарий может отправить в одном выполнении

Конечно, таблица базы данных может быть идеей.А как насчет отправки 1000 электронных писем с вложением размером 2 МБ?вам тоже придется это принять во внимание.У меня самого возникла проблема, и в конце концов я прибег к записи электронного письма в базу данных, а файлов — в файловую систему.Сценарий электронной почты, который я использовал, затем прочитал записи базы данных и попытался получить вложения для отправки.

Вы уверены, что вам нужно поставить почту в очередь самостоятельно?

Просто доставьте всю почту агенту передачи почты на локальном компьютере (sendmail...), и пусть он позаботится о очереди и отправке.В конце концов, именно для этого и было создано.

Другими словами:не беспокойся об этом!

Обычно я полагался на хак.У меня есть список адресов электронной почты в базе данных, а затем я использую мета-перенаправление на себя с увеличивающимся параметром «смещение», который указывает, к какой строке в базе данных я нахожусь.Перенаправления сервера вызывают проблемы, поскольку браузеры предполагают, что затраченное время указывает на бесконечный цикл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top