我有大约10k用户订阅了新闻简报的数据库。我正在将我的网站从asp更改为php。我正在通过cron job发送新闻通讯。我想跟踪不成功的交付报告的记录。这怎么可能? 请指导我,谢谢。
答案 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和状态代码才能正确解析。
总的来说,如果可能的话,我建议您只使用MailChimp或Constant Contact等第三方服务。它的工作量少得多,除非你有一个开发团队在一段时间内开展工作,否则服务可能会产生更好的结果。