如何在 PHP 中每周向 100,000 位用户发送一封电子邮件?这包括使用以下提供商向订阅者发送邮件:
- 美国在线
- 邮箱
- 热邮件
- 雅虎
在可能的范围内,实际发送所有电子邮件非常重要。显然,按照惯例只发送邮件只会产生问题。
是否有一个 PHP 库可以让这变得更简单?
如何在 PHP 中每周向 100,000 位用户发送一封电子邮件?这包括使用以下提供商向订阅者发送邮件:
在可能的范围内,实际发送所有电子邮件非常重要。显然,按照惯例只发送邮件只会产生问题。
是否有一个 PHP 库可以让这变得更简单?
简短回答:虽然从技术上讲,每周自己发送 10 万封电子邮件是可行的,但最简单、最简单和最便宜的解决方案是将其外包给专门从事此业务的公司之一(我确实说过“最便宜”:没有限制尝试 DIY 时可以投入的开发时间(以及金钱)。
长答案:如果您决定绝对要自己做这件事,请为一个充满伤害的世界做好准备(毕竟,这是我们正在谈论的电子邮件/电子邮件失败)。你需要:
mail()
本身就足够可怕了)令人惊讶的是,这很容易。困难的部分实际上是发送它:
最重要的是,您必须管理其中的法律部分(各种联邦、州和地方法律;甚至在您发送到美国境外时也会遇到不同的法律问题(注意:您无法找到 joe @hotmail.com 住在西南埃尔博尼亚,这个国家拥有世界上最严厉的反垃圾邮件法律))。
我很确定我错过了这个九头蛇的几个头 - 你仍然确定你想自己做这个吗?如果是这样,将会有另一波浪潮,这一次仅仅是发送电子邮件固有的烦人问题。(您看,SMTP 是一种存储转发协议,这意味着您的电子邮件将在 Internet 上的许多 SMTP 服务器上进行洗牌,希望下一个更接近最终收件人。基本上,电子邮件被发送到 SMTP 服务器,该服务器将其放入转发队列;时间到了,它将进一步转发到不同的 SMTP 服务器,直到它到达给定域的 SMTP 服务器。这种转发可能会立即发生,或几分钟,或几小时,或几天,或永远不会。)因此,您将看到以下问题 - 其中大部分可能发生在途中以及目的地:
<blink>
不是您的朋友,也不是<font color=...>
)你的工作就是排除故障和解决这个问题(提示:你不能,大多数情况下)。经营合法的群发邮件业务的人知道,最终你无法解决它,他们也无法解决它——他们有充分研究、记录和概述的原因(甚至可能作为 Powerpoint 演示文稿- 完整的声音和很酷的过渡 - 你的老板可以理解),因为他们之前已经解释过一百万次了。另外,对于实际可以解决的问题,他们非常清楚如何解决。
如果在这一切之后,你没有气馁并且仍然想这样做,那就继续吧:你甚至有可能找到更好的方法来做到这一点。只要知道前面的路并不容易 - 发送电子邮件是微不足道的,传递它是困难的。
人们推荐了 MailChimp,它是一个很好的批量电子邮件供应商。如果您正在寻找交易电子邮件的优秀供应商,我可能会提供帮助。
在过去的 6 个月中,我们使用了四个不同的 SMTP 供应商,目的是找出哪个是最好的。
以下是我们发现的摘要......
结论
SendGrid 是最好的,Postmark 排在第二位。我们从来没有看到这两者中的任何一个在发送时间上有任何犹豫——在某些情况下,我们一次发送了数百封电子邮件——而且它们都具有最好的投资回报率,因为它们具有可靠的功能集。
这是我最近在我的一个更大的系统上使用 PHP 所做的:
用户输入时事通讯文本并选择收件人(这会生成查询以检索电子邮件地址以供以后使用)。
将时事通讯文本和收件人查询添加到 mysql 表中名为 *email_queue* 的行
我创建了另一个脚本,它作为 cron 作业每分钟运行一次。它使用SwiftMailer类。这个脚本很简单:
在工作时间,发送所有优先级 == 0 的电子邮件
下班后,按优先级发送其他电子邮件
根据主机设置,我现在可以使用标准的 swiftmailers 插件(如 antiflood 和 throttle...
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(50, 30));
和
$mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( 100, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE ));
等等等等。
我已经将它扩展到这个伪代码之外,带有附件和许多其他可配置的设置,但只要你的服务器设置正确以发送电子邮件,它就可以很好地工作。(可能不适用于共享主机,但理论上应该......) Swiftmailer 甚至有一个设置
$message->setReturnPath
我现在用它来跟踪反弹...
快乐的足迹!(快乐的电子邮件?)