Php 如何每周发送100000封电子邮件?
如何在PHP中每周向100000名用户发送电子邮件?这包括使用以下提供程序向订阅者发送邮件:Php 如何每周发送100000封电子邮件?,php,email,mailing-list,massmail,Php,Email,Mailing List,Massmail,如何在PHP中每周向100000名用户发送电子邮件?这包括使用以下提供程序向订阅者发送邮件: 美国在线 电子邮件 Hotmail 雅虎 在可能的范围内,所有电子邮件都要实际发送,这一点很重要。显然,仅仅按常规发送邮件只会带来问题 是否有一个PHP库可以简化这一过程 简短回答:虽然每周自己发送10万封电子邮件在技术上是可行的,但最简单、最简单、最便宜的解决方案是将其外包给一家专门从事it的公司(我确实说过“最便宜”:开发时间(以及资金)没有限制当你试着自己动手做的时候,你会陷入这种状态) 详细
- 美国在线
- 电子邮件
- Hotmail
- 雅虎
是否有一个PHP库可以简化这一过程 简短回答:虽然每周自己发送10万封电子邮件在技术上是可行的,但最简单、最简单、最便宜的解决方案是将其外包给一家专门从事it的公司(我确实说过“最便宜”:开发时间(以及资金)没有限制当你试着自己动手做的时候,你会陷入这种状态) 详细回答:如果你决定自己绝对想做这件事,那就准备好面对一个充满伤害的世界(毕竟,我们谈论的是电子邮件/e-fail)。您需要:
- 非垃圾邮件的电子邮件内容(否则,您在每一步都会遇到额外的主要障碍,甚至法律后果)
- 此外,你的内容应该很容易与垃圾邮件区分开来——这在某些情况下可能有点难做到(我听说某家制药公司不得不放弃电子邮件,因为它们的品牌名称在垃圾邮件中很常见)
- 您自己的可配置SMTP服务器,当您将10万封电子邮件转储到该服务器上时,该服务器不会发生故障(您的ISP的上游服务器在这里不够用,您会让ISP非常不满意;我们使用了两个专用框)
- 一些邮件包装器(例如,如果PHP是您选择的毒药,则为PhpMailer;使用PHP的
本身就够可怕的了)mail()
- 您自己的sender函数以循环方式运行,创建邮件并将其传递给包装器(请注意,如果您的应用程序存在内存泄漏,您可能会遇到PHP的内存限制;您可能需要定期循环发送过程,或者更好地将“创建电子邮件”和“发送电子邮件”完全解耦)
- 当您发送太多的邮件时,某些服务器会禁止您发送,因此您需要洗牌并观察您的队列(例如,将一封邮件发送到joe@example.com,然后三个到其他域,只有另一个到otheraddress@example.com)
- 你需要有正确的答案
- 处理远程服务器超时、错误配置的DNS记录和其他网络玩笑
- 处理无效电子邮件(和否)
- 处理退订(许多合法的时事通讯被重新归类为垃圾邮件,因为许多沮丧的用户无法一步退订,而是选择“标记为垃圾邮件”-垃圾邮件过滤器确实了解,尤其是大型电子邮件提供商)
- 处理跳转和拒绝(“无此类邮箱ojhn@example.com“,”邮箱john@example.com完整“)
- 处理黑名单和从黑名单中删除(当然,你不会发送垃圾邮件。有些收件人不会这么确定-有这么大的名单,不管你采取什么预防措施,有时都会发生。有些人(例如,你的竞争对手不那么严格)甚至可能会将你的邮件错误地报告为垃圾邮件——这种情况确实会发生。平均来说,你需要几周的时间才能从黑名单中除名。)
- 远程SMTP服务器不想与您的SMTP服务器通信
- 您的邮件被标记为垃圾邮件(
在这里不是您的朋友,
) - 您的邮件会延迟几天甚至几周送达(与流行观点相反,SMTP旨在尽最大努力在将来某个时候送达邮件,而不是现在送达)
- 您的邮件根本未送达(已从hop#4上的电子邮件服务器发送,尚未从hop#5上的服务器发送,当前保存邮件的服务器崩溃,数据丢失)
- 你的邮件在发送途中被一些死气沉沉的服务器弄乱了(这封邮件在某种程度上可以用base64编码解决,但随后邮件的大小会增加,邮件看起来更可疑)
- 你的邮件已经送达,收件人似乎并不想要这些邮件(“我肯定我没有注册,我清楚地记得一年前我做了什么”(当然,先生))
- 使用不同版本Microsoft Outlook的用户及其对Internet邮件的特殊处理
- wizard的学徒模式(一个自我强化的积极反馈循环——换句话说,自动电子邮件作为对……的回复;你真的不想成为引发这种情况的人,因为你会激怒一半的互联网用户)
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(50, 30));
$mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( 100, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE ));
$message->setReturnPath