PHP скрипт времени и smtp отправка почты - PullRequest
0 голосов
/ 13 мая 2011

У меня есть приложение Cakephp, в котором есть пользователи с идентификаторами и адресами электронной почты (адреса электронной почты могут быть недействительными).

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

     foreach($users as $u)
     {
              if($this->sendMail($u['to'], $u['subject'], $u['text_message'], $u['html_message']))
                       //update database with sent email
     }

Он отлично работает с 1 или 2 адресами, но застревает, когда я запускаю его через всех пользователей. Это потому, что у меня неправильные адреса или тайм-аут моего php-скрипта?

Ответы [ 2 ]

2 голосов
/ 13 мая 2011
  • Если вам нужно отправить много писем, напишите скрипт, который запускается в фоновом режиме (вызывается cron или чем-то еще); или ваш запрос истечет.

Чтобы сократить доставку вы могли:

  • Проверяйте (с помощью регулярных выражений) и очищайте (обрезайте и т. Д.) Адреса электронной почты, прежде чем пытаться отправлять на них электронные письма. Люди тупые и ставят www. в их адрес или опечатка.
  • Ловите ошибки доставки, посмотрите, что произошло (почему почтовый сервер не принял электронную почту? Получатель существует?), И если адрес указан неверно, игнорируйте его в будущих прогонах доставки.
1 голос
/ 13 мая 2011

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

Обходной путь для этого - запустить скрипт как задание cron и составить список тех, которые доставляют вам неприятности.Вы можете написать оболочку для торта, которая сделает это, чтобы вы могли запустить ее из командной строки: http://book.cakephp.org/view/1107/Creating-Shells-Tasks

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