Php 如何每周发送100000封电子邮件?

Php 如何每周发送100000封电子邮件?,php,email,mailing-list,massmail,Php,Email,Mailing List,Massmail,如何在PHP中每周向100000名用户发送电子邮件?这包括使用以下提供程序向订阅者发送邮件: 美国在线 电子邮件 Hotmail 雅虎 在可能的范围内,所有电子邮件都要实际发送,这一点很重要。显然,仅仅按常规发送邮件只会带来问题 是否有一个PHP库可以简化这一过程 简短回答:虽然每周自己发送10万封电子邮件在技术上是可行的,但最简单、最简单、最便宜的解决方案是将其外包给一家专门从事it的公司(我确实说过“最便宜”:开发时间(以及资金)没有限制当你试着自己动手做的时候,你会陷入这种状态) 详细

如何在PHP中每周向100000名用户发送电子邮件?这包括使用以下提供程序向订阅者发送邮件:

  • 美国在线
  • 电子邮件
  • 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完整“)
  • 处理黑名单和从黑名单中删除(当然,你不会发送垃圾邮件。有些收件人不会这么确定-有这么大的名单,不管你采取什么预防措施,有时都会发生。有些人(例如,你的竞争对手不那么严格)甚至可能会将你的邮件错误地报告为垃圾邮件——这种情况确实会发生。平均来说,你需要几周的时间才能从黑名单中除名。)
最重要的是,你必须管理它的法律部分(各种联邦、州和地方法律;甚至当你将其发送到美国境外时,还要处理各种复杂的法律。(注:你无法找到joe@hotmail.com居住在厄尔巴尼亚西南部,这个国家有着世界上最严厉的反垃圾邮件法律

我很确定我错过了这个九头蛇的一些头像-你还确定你想自己做这件事吗?如果是这样的话,将会出现另一个浪潮,这一次仅仅是发送电子邮件所固有的恼人问题。(您知道,SMTP是一种存储转发协议,这意味着您的电子邮件将在Internet上的多个SMTP服务器之间移动,希望下一个服务器更接近最终收件人。基本上,电子邮件被发送到SMTP服务器,该服务器将其放入转发队列;到时候,它将进一步转发到dif转发SMTP服务器,直到它到达给定域的SMTP服务器。此转发可能会立即发生,也可能在几分钟内、几小时内、几天内或永远不会发生。)因此,您将看到以下问题-大多数问题可能会在路由过程中以及在目标位置发生:

  • 远程SMTP服务器不想与您的SMTP服务器通信
  • 您的邮件被标记为垃圾邮件(
    在这里不是您的朋友,
  • 您的邮件会延迟几天甚至几周送达(与流行观点相反,SMTP旨在尽最大努力在将来某个时候送达邮件,而不是现在送达)
  • 您的邮件根本未送达(已从hop#4上的电子邮件服务器发送,尚未从hop#5上的服务器发送,当前保存邮件的服务器崩溃,数据丢失)
  • 你的邮件在发送途中被一些死气沉沉的服务器弄乱了(这封邮件在某种程度上可以用base64编码解决,但随后邮件的大小会增加,邮件看起来更可疑)
  • 你的邮件已经送达,收件人似乎并不想要这些邮件(“我肯定我没有注册,我清楚地记得一年前我做了什么”(当然,先生))
  • 使用不同版本Microsoft Outlook的用户及其对Internet邮件的特殊处理
  • wizard的学徒模式(一个自我强化的积极反馈循环——换句话说,自动电子邮件作为对……的回复;你真的不想成为引发这种情况的人,因为你会激怒一半的互联网用户)
你的工作就是解决这个问题(提示:大部分情况下你不能)。peo
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(50, 30));
$mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( 100, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE ));
$message->setReturnPath