有关发送批量电子邮件时发送失败报告的问题

时间:2011-05-01 11:07:59

标签: email bulk-email

我有大约10k用户订阅了新闻简报的数据库。我正在将我的网站从asp更改为php。我正在通过cron job发送新闻通讯。我想跟踪不成功的交付报告的记录。这怎么可能? 请指导我,谢谢。

2 个答案:

答案 0 :(得分:1)

在php中发送带邮件功能的邮件时,你应该检查条件

if(mail($ to,$ subject,$ message,$ headers)){  //成功发送邮件 } else {  //未成功邮寄的代码 }

答案 1 :(得分:1)

  

在php中发送带邮件的邮件   你应该检查的功能   条件

     

if(mail($ to,$ subject,$ message,   $ headers)){//成功邮件   delivery} else {//代码   未成功的邮寄}

对于OP实际尝试做的事情,这是非常不合理的...... From the manual

  

重要的是要注意这一点   因为邮件被接受了   送货,这并不意味着邮件   实际上会达到目的   目的地。

根据服务器类型和配置,您将获得不同的结果。最好使用SMTP来确保正确和一致的界面。通常我会用一个库来做这个...你可以自己手动使用套接字,但为什么重新发明轮子?我根据项目使用了3个库......

对于这种级别的交互,我会使用SwiftMailer或Zend_Mail。这两个都支持从SMTP获取信息以及发送消息,例如,您可以获取有关失败的收件人的信息(SwitftMailer example)。 Zend和Swift都支持自定义假脱机队列,因此您可以以应用程序感知的方式更深入地集成排队和发送消息。 SwiftMailer也有batchSend功能...我认为这也可以在Zend_Mail中使用,但我从来没有深入挖掘过。

这只是战斗的一半......为了实际读取NDR,您需要编写登录到邮件存储的脚本,循环浏览消息,然后parsing the headers and/or the message body of the NDR(确保您参考wikipage上列出的RFC文档),然后根据它采取行动。最近我使用Zend_Mail_Storage来处理这个问题。如果您需要这样做,那么您可能还想继续使用Zend_Mail进行发送,因为存储包含在组件中。您需要查看RFC for NDR和状态代码才能正确解析。

总的来说,如果可能的话,我建议您只使用MailChimpConstant Contact等第三方服务。它的工作量少得多,除非你有一个开发团队在一段时间内开展工作,否则服务可能会产生更好的结果。