Очередь писем в php - PullRequest
       81

Очередь писем в php

5 голосов
/ 20 августа 2008

Какой самый правильный способ отправки электронной почты с минимальной 1000 или более в PHP? Любая надежная методика очереди электронной почты, которая способна справиться с этим?

Ответы [ 6 ]

5 голосов
/ 20 августа 2008

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

2 голосов
/ 20 августа 2008

Для этого есть проверенное решение: PEAR Mail_Queue

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

1 голос
/ 22 августа 2008

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

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

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

1 голос
/ 20 августа 2008

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

1 голос
/ 20 августа 2008

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

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

для фактической отправки почты я бы использовал PEAR mail через функцию php mail ()

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

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

0 голосов
/ 20 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...