如何使用 PHP 每周向 100,000 个用户发送一封电子邮件?这包括使用以下提供商向订阅者发送邮件:
重要的是,所有电子邮件都应尽可能实际交付。显然,仅仅按照惯例发送邮件只会产生问题。
有没有 PHP 库可以让这件事变得更简单?
简短回答:虽然从技术上讲,您自己每周发送 10 万封电子邮件是可行的,但最简单、最容易且最便宜的解决方案是外包这个到一家专门从事该领域的公司(我did说“最便宜”:在尝试 DIY 时,您可以投入的开发时间(以及金钱)是没有限制的。
长答案:如果你决定你绝对想要要自己做到这一点,请为一个受伤的世界做好准备(毕竟,这是我们谈论的电子邮件/电子邮件失败)。你需要:
- 电子邮件内容is not垃圾邮件(否则您在每一步都会遇到额外的主要障碍,甚至法律后果)
- 此外,您的内容应该易于理解区分来自垃圾邮件 - 在某些情况下这可能有点困难(我听说某制药公司不得不放弃电子邮件,因为他们的品牌名称在垃圾邮件中很常见)
- 一台您自己的可配置 SMTP 服务器,当您向其转储 100k 电子邮件时,该服务器不会崩溃(您的 ISP 的上游服务器在这里不够用,您会让 ISP 非常不高兴;我们使用了两个专用的盒子)
- 一些邮件包装器(例如 PhpMailer,如果 PHP 是您选择的毒药;使用 PHP
mail()
本身就够可怕的了)
- 您自己的发件人函数循环运行,创建邮件并将它们传递给包装器(请注意,如果您的应用程序存在内存泄漏,您可能会遇到 PHP 的内存限制;您可能需要定期回收发送进程,甚至更好,将“创建电子邮件”和“发送电子邮件”完全解耦)
令人惊讶的是,这是最容易的部分。困难的部分实际上是发送它:
- 当您发送太多靠近在一起的邮件时,某些服务器会禁止您,因此您需要洗牌并观察您的队列(例如,将一封邮件发送到[电子邮件受保护] /cdn-cgi/l/email-protection,然后三个到其他域,然后再另一个到[电子邮件受保护] /cdn-cgi/l/email-protection)
- 你需要有正确的PTR、SPF、DKIM 记录 http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html
- 处理远程服务器超时、错误配置的 DNS 记录和其他网络问题
- 处理无效的电子邮件(并且不,正则表达式是错误的工具 https://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378)
- 处理取消订阅(许多合法的新闻通讯已被重新归类为垃圾邮件,因为许多沮丧的用户无法一步取消订阅,而是选择“标记为垃圾邮件”——垃圾邮件过滤器确实会学习,尤其是大型电子邮件提供商)
- 处理退回邮件和拒绝邮件(“没有这样的邮箱[电子邮件受保护] /cdn-cgi/l/email-protection“,“邮箱[电子邮件受保护] /cdn-cgi/l/email-protection full")
- 处理黑名单和从黑名单中删除(当然,您不是在发送垃圾邮件。有些收件人不会那么确定 - 对于如此大的列表,它will无论您采取什么预防措施,有时都会发生这种情况。有些人(例如您不那么谨慎的竞争对手)甚至可能会错误地将您的邮件报告为垃圾邮件 - 这种情况确实发生了。在average,需要几周时间才能将自己从黑名单中删除。)
最重要的是,你必须管理它的法律部分(各种联邦、州和地方法律;甚至一旦你发送到美国境外,你就无法找到不同的法律混乱(注意:你无法找到是否[电子邮件受保护] /cdn-cgi/l/email-protection住在埃尔波尼亚西南部,该国拥有世界上最严厉的反垃圾邮件法))。
我很确定我错过了这个九头蛇的几个头 - 你仍然确定要自己做吗?如果是这样,将会出现另一波浪潮,这一次只是发送电子邮件固有的烦人问题。 (您看,SMTP 是一种存储转发协议,这意味着您的电子邮件将在 Internet 上的许多 SMTP 服务器上进行传输,希望下一封邮件更接近最终收件人。基本上,电子邮件被发送到 SMTP 服务器,该服务器将其放入转发队列中;到了时间,它将进一步转发到不同的 SMTP 服务器,直到到达给定域的 SMTP 服务器。此转发可能会立即发生,或者几分钟、几小时、几天,或者永远不会。)因此,您将看到以下问题 - 其中大多数可能发生在途中以及目的地:
- 远程 SMTP 服务器不想与您的 SMTP 服务器通信
- 您的邮件被标记为垃圾邮件(
<blink>
不是你的朋友,也不是<font color=...>
)
- 您的邮件会晚几天甚至几周送达(与流行观点相反,SMTP 的设计目的是尽最大努力在未来某个时间送达邮件,而不是现在送达)
- 您的邮件根本没有送达(已从跃点 #4 上的电子邮件服务器发送,尚未从跃点 #5 上的服务器发送,当前保存邮件的服务器崩溃,数据丢失)
- 你的邮件在途中被一些脑残服务器破坏了(这个问题可以通过base64编码来解决,但随后大小会增加并且电子邮件looks更加可疑)
- 您的邮件已送达,但收件人似乎不想要它们(“我确信我没有注册此邮件,我清楚地记得我一年前做了什么”(当然,您这样做了,先生))
- 使用不同版本的 Microsoft Outlook 及其应用程序的用户special处理互联网邮件
- 向导的学徒模式(自我强化的积极反馈循环 - 换句话说,自动电子邮件作为对自动电子邮件的回复作为对...的回复;您really不想成为引发这一事件的人,因为你会激怒半个互联网的人)
它将是your解决这个问题的工作(提示:大多数情况下你不能)。经营合法群发邮件业务的人知道,最终你无法解决它,他们也无法解决它 - 并且他们对原因进行了充分研究、记录和概述(甚至可能作为 Powerpoint 演示文稿) - 配有声音和酷炫的过渡 - 您的老板可以理解),因为他们之前已经解释过这一点一百万次了。另外,对于真正可以解决的问题,他们非常清楚如何解决。
如果在经历了这一切之后,您并不灰心并且仍然想这样做,那就继续吧:您甚至可能会找到更好的方法来做到这一点。要知道,前面的路并不容易——发送电子邮件是微不足道的,而送达它却很难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)