使用PHPMailer()发送电子邮件

时间:2010-02-19 01:09:41

标签: php timeout phpmailer newsletter

我创建了一个简报系统,我的问题是:考虑到我必须将该邮件发送到数百个电子邮件地址,我应该如何编写代码?

我和我的主机管理员讨论过,他告诉我应该逐个发送电子邮件,但每分钟不要超过6封。

我可以使用$ Timeout属性吗?如果是这样,怎么样?

感谢。

2 个答案:

答案 0 :(得分:3)

如果您必须逐个发送邮件(而不是使用BCC),我会使用数据库队列来尊重每分钟只发送6封邮件的限制(无论您最终采用何种解决方案)用来实际发送邮件)。

E.g。你有一个包含收件人,主题,邮件主体,lastsenddate,timessent和status的数据库表。

保存所有邮件,然后发送到数据库,然后设置一个每分钟运行一次的cronjob,并检查队列中是否还有邮件等待发送(例如status =“unsend”)。然后,您从队列中选择最多6个(或任何限制)邮件,将其发送出去,将状态设置为“发送”(并增加“timessent”并将“lastsenddate”设置为实际时间,如果您喜欢)并等待下一个cronjob,直到所有邮件都被发送。

这样你有几个好处:

  1. 您可以尊重每分钟限制
  2. 您将所有邮件都放在数据库中,以后可以与他们联系(例如,查看有多少邮件 - 以及您上周五发送的邮件或查询某个地址是否已被处理 - 以及何时以及如何处理很多次 - 如果有人声称他从未收到过邮件/或太多邮件
  3. 通过跟踪邮件状态,您可以实现一个弹跳处理程序,例如如果邮件返回,则将邮件状态设置为“退回”,这样您可以在以后的某个时间开始重新发送邮件,以便第一次到达“邮箱已满”消息的地址
  4. 通过将邮件保存到数据库,您甚至可以通过添加数据库字段“starttime”来设置“延期邮件服务”,并使您的发送脚本尊重此日期,因此您可以将您的圣诞邮件排入队列春天:)

答案 1 :(得分:0)

Pear Mail将允许您从PHP向所有人发送电子邮件。

http://pear.php.net/package/Mail/