2011-05-13 73 views
0

我有一个CakePHP应用程序,用户使用ID和电子邮件(电子邮件可能不是一个有效的地址)。PHP脚本时间和smtp发送邮件

因此,我使用pairmail并通过用户表循环发送电子邮件。

 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脚本超时了吗?

+0

不知道当你的脚本得到一个错误的地址时会发生什么,但通常它只是发送一封邮件到你说它应该发送邮件的任何地址,如果这不是一个工作,你会得到一个反弹电子邮件,邮件。 – 2011-05-13 07:59:30

+0

是的,这是真的,也许它的一些我的虚拟数据 – cdub 2011-05-13 08:02:26

+0

我看不到任何代码pailmail。请张贴更多的代码! – Tim 2011-05-13 08:02:45

回答

2
  • 如果你有很多邮件的发送写在后台运行的脚本(由cron或者什么叫);否则你的请求会超时。

为了减少输送克鲁夫特你可以:

  • 验证(使用正则表达式)和消毒(装饰等),电子邮件地址,您尝试发送电子邮件到他们面前。人们很愚蠢,把www。在他们的地址或输入错误。
  • 赶上传递错误,看看发生了什么(为什么没有邮件服务器接受电子邮件?收件人是否存在?),如果地址是错误的标记,并在未来的交付运行中忽略它。
+0

是的,它将成为一个cron – cdub 2011-05-13 08:13:04

1

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

解决这个问题的方法是将脚本作为cron作业运行,并建立一个给你带来麻烦的列表。你可以写一个蛋糕壳做这个工作,所以你可以在命令行中运行:http://book.cakephp.org/view/1107/Creating-Shells-Tasks

+0

是的,我有一个蛋糕行动,但一个cron工作将会运行,并调整信使,所以cron将运行,但蛋糕壳是另一种选择 – cdub 2011-05-13 08:15:47