0

我有一个包含 534 封注册电子邮件(时事通讯)的小型数据库。

我知道如何从我的数据库向所有电子邮件地址发送电子邮件,但问题在于页面托管的限制。我限制在 200 封电子邮件/小时,如果我强制发送到所有地址,我可能会被禁止。

一开始我使用循环发送( for() 和 foreach() ),我选择了所有电子邮件而不是使用 smtp 发送消息。

昨天我在查看我的通知时,我看到了来自网络托管公司的警告窗口,我可能会被禁止,因为我试图在不到 1 小时内发送超过 500 封电子邮件!

我该怎么办?

4

5 回答 5

1

如果您使用 mail() (没有代码我无法判断)然后从 php.net 阅读...

笔记:

值得注意的是,mail() 函数不适合循环处理大量电子邮件。此函数为每封电子邮件打开和关闭一个 SMTP 套接字,效率不高。

如需发送大量电子邮件,请参阅 » PEAR::Mail 和 » PEAR::Mail_Queue 包。

梨在我的书中并不有趣。我倾向于同意这篇文章,比如SwiftMailer

于 2012-10-16T07:27:58.550 回答
1

您可以像这样在一个电话中发送多封电子邮件

CC = "emailaddress1@xxxx.com; emailaddress2@xxxxx.com". BCC = "Firstemailaddress; secondemailaddress"

但它也有一个限度。

于 2012-10-16T07:31:14.830 回答
1

您可以每小时运行一次脚本,并在您的select语句中更改limit值以在您的范围内工作,您可以将这些值保存在数据库中并在完成后将其设置回 0,甚至可以在创建然后重置的简单文件中在所有电子邮件都已循环之后。

于 2012-10-16T07:31:24.037 回答
1

以下步骤会有所帮助。

  1. 首先在表中添加一个参考作为状态标志,无论电子邮件是否发送给该特定客户。您可以为此使用布尔值。
  2. 编写电子邮件发送脚本以仅运行 200 个循环,您应该在其中获得 200 个电子邮件尚未发送的电子邮件地址。(未发送标志的地方)
  3. 在循环内部,在向每个用户发送电子邮件时,将他们的标志更新为数据库中的发送。

完成上述脚本后,您所要做的就是设置一个可以每小时执行一次的 cronjob 并在其中调用您的 php 脚本。

希望这可以帮助。

于 2012-10-16T07:35:07.813 回答
0

我们为我们的 Web 应用程序使用外部电子邮件系统。我个人推荐SendGrid,它处理缩放并提供一些非常有用的分析(非常方便追踪坏地址)。

于 2012-10-19T02:08:24.833 回答