【发布时间】:2011-05-01 11:07:59
【问题描述】:
我有大约 10,000 个订阅时事通讯的用户的数据库。我正在将我的网站从 asp 更改为 php。我正在通过 cron 作业发送时事通讯。我想跟踪不成功交付报告的记录。这怎么可能? 请指导我,谢谢。
【问题讨论】:
标签: email bulk-email
我有大约 10,000 个订阅时事通讯的用户的数据库。我正在将我的网站从 asp 更改为 php。我正在通过 cron 作业发送时事通讯。我想跟踪不成功交付报告的记录。这怎么可能? 请指导我,谢谢。
【问题讨论】:
标签: email bulk-email
在 php 中当你用邮件发送邮件时 您应该检查的功能 条件
if(邮件($to, $subject, $message, $headers)){ // 邮件成功 交付 } else { // 代码 邮寄不成功 }
这对于 OP 实际尝试做的事情是非常不准确的...From the manual:
重要的是要注意 因为邮件被接受 交付,这并不意味着邮件 实际上会达到预期的 目的地。
根据服务器类型和配置,您将获得不同的结果。最好使用 SMTP 来确保正确且一致的接口。通常我会使用一个库来做到这一点......你可以使用套接字自己手动完成,但为什么要重新发明轮子呢?根据项目,我使用了 3 个库...
对于这种级别的交互,我会使用 SwiftMailer 或 Zend_Mail。这两者都支持从 SMTP 获取信息以及发送消息,因此例如,您可以获得有关失败收件人的信息 (SwitftMailer example)。 Zend 和 Swift 都支持自定义 spools 队列,因此您可以更深入地以应用程序感知方式集成队列和发送消息。 SwiftMailer 也有 batchSend 功能……我认为 Zend_Mail 也有这个功能,但我从来没有深入研究过。
这只是成功的一半...为了真正阅读 NDR,您需要编写脚本登录到邮件存储,循环浏览邮件,然后 parsing the headers and/or the message body of the NDR(确保您参考 RFC 文档wikipage 上列出的),然后据此采取行动。最近我用Zend_Mail_Storage 来处理这个问题。如果您需要这样做,那么您可能还想继续使用 Zend_Mail 进行发送,因为 Storage 包含在组件中。您需要查看 NDR 和状态代码的 RFC 才能正确解析。
总的来说,如果可能的话,我建议只集成一个第三方服务,如MailChimp 或Constant Contact。它的工作量要少得多,除非你有一个开发团队随着时间的推移在这方面工作,否则服务可能会全面产生更好的结果。
【讨论】:
在 php 中,当您使用邮件功能发送邮件时,您应该检查条件
if(邮件($to, $subject, $message, $headers)){ // 邮件投递成功 } 别的 { // 发送不成功的代码 }
【讨论】: