PHP脚本时间和smtp发送邮件

时间:2011-05-13 07:44:03

标签: php email cakephp smtp

我有一个Cakephp应用,其用户包含ID和电子邮件(电子邮件可能不是有效地址)。

所以我使用pairmail并遍历users表来发送电子邮件。

     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 个答案:

答案 0 :(得分:2)

  • 如果您要发送大量邮件,请编写一个在后台运行的脚本(由cron或其他人调用);或者你的请求会超时。

要减少交付时间,你可以:

  • 在您尝试向其发送电子邮件之前,验证(使用正则表达式)并清理(修剪等)电子邮件地址。人是愚蠢的,把www。在他们的地址或错误的他们。
  • 抓住发送错误,看看发生了什么(为什么邮件服务器不接受电子邮件?收件人是否存在?)如果地址错误,请在将来的交付运行中忽略它。

答案 1 :(得分:1)

我没有使用过PairMailer,但是我遇到了SwiftMailer这个问题。当电子邮件无效且SMTP服务器不接受时,会发生这种情况。这是在邮件发送之前发生的。这可能需要几秒钟,这样的一些电子邮件会加起来。

解决这个问题的方法是将脚本作为cron作业运行,并建立一个给你带来麻烦的列表。您可以编写一个执行此操作的蛋糕shell,以便您可以从命令行运行它:http://book.cakephp.org/view/1107/Creating-Shells-Tasks