Отправка писем с помощью PHPMailer () - PullRequest
1 голос
/ 19 февраля 2010

Я создал систему новостной рассылки, и мой вопрос: как мне написать свой код, учитывая, что я должен отправить это письмо на сотни адресов электронной почты?

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

Могу ли я использовать свойство $ Timeout? Если так, то как?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2010

Если вам нужно отправлять письма одно за другим (вместо использования BCC), я бы использовал очередь базы данных, чтобы соблюсти ограничение на отправку только 6 писем в минуту (независимо от того, какое решение вы, наконец, решите)использовать для фактической отправки писем).

Например, у вас будет таблица базы данных, содержащая получателя, тему, почтовое сообщение, дату последнего отправления, время отправки и статус.

Сохраните все письма, которые вы отправите, в базу данных, а затем установите cronjob, который будет запускаться раз в минуту, и проверьте, есть ли еще сообщения в очереди, ожидающие отправки (например, status = "unsend").Затем вы выбираете не более 6 (или любого другого ограничения) писем из очереди, отправляете их, устанавливаете статус «отправить» (и увеличиваете «время отправки» и устанавливаете для «lastsenddate» фактическое время, если выкак) и дождитесь следующего cronjob, пока все письма не будут отправлены.

Таким образом, у вас есть несколько преимуществ:

  1. вы можете уважать свой поминутный лимит
  2. у вас есть все ваши письма в базе данных, и вы можете обратиться к ним позже (например, чтобы выяснить, сколько писем - и какие письма вы отправили в прошлую пятницу или узнать, был ли обработан определенный адрес - и когда и сколько раз)- если кто-то утверждает, что он никогда не получал письмо / или слишком много)
  3. , отслеживая состояние почты, вы могли бы реализовать обработчик отказов, который, например, установит для состояния почты значение «отклонено», если письмо возвращаетсяТаким образом, вы можете начать повторную отправку вашего почтового сообщения через некоторое время, чтобы достичь адресов, которые в первый раз вернули сообщение «полный почтовый ящик»
  4. , сохранив ваши письма в базе данных, вы можете дажеВозьмите «отложенный почтовый сервис», добавив поле базы данных «starttime» и сделайте так, чтобы ваш send-скрипт учитывал эту дату, чтобы вы могли уже поставить в очередь свои рождественские письма весной:)
0 голосов
/ 19 февраля 2010

Pear Mail позволит вам отправлять электронную почту из PHP множеству людей.

http://pear.php.net/package/Mail/

...