使用PHP发送大量电子邮件

Ala*_*lan 51 php email bulk massmail

我目前正在写一个音乐博客.管理员每2-3天发布一篇新文章.管理员发布文章后,将立即向大约5000个订阅者发送大量电子邮件.

实施群发邮件功能的最佳方法是什么?

以下功能是否有效?

function massmail() 
{
  $content = '...';
  foreach ($recipients as $r) {
    $_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
    mail($r, 'subject', $_content);
  }
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:如果所有5000个订阅者都使用Yahoo Mail,雅虎会将其视为DDOS攻击并阻止我的SMTP服务器的IP地址吗?

Ext*_*kun 48

首先,使用PHP附带的mail()函数不是最佳解决方案.它很容易被标记为垃圾邮件,您需要设置标题以确保正确发送HTML电子邮件.至于代码片段是否会起作用,它会,但我怀疑你会在其中正确获取HTML代码而不指定额外的标题

我建议你看看SwiftMailer,它支持HTML,支持不同的mime类型和SMTP身份验证(不太可能将你的邮件标记为垃圾邮件).

  • +1您可能还希望进行一些延迟/定时发送,具体取决于您可以控制邮件服务器的程度.如果您一次发送数百条消息,某些目标服务器可能会阻止您.此外,您可能希望详细记录发送的每封电子邮件的状态.拥有100多个测试电子邮件帐户(您的测试帐户),并使用不同的内容逐步测试它们将有所帮助. (10认同)

bum*_*box 31

我会将所有电子邮件插入数据库(有点像队列),然后像在代码中一样处理它们(如果你想使用swiftmailer或phpmailer等,你也可以这样做.)

发送每封邮件后,更新数据库以记录发送的日期/时间.

首先将它们放入数据库中

  1. 你发送给谁的记录
  2. 如果您的脚本超时或失败并且您必须再次运行它,那么您将不会最终向人们发送相同的电子邮件两次
  3. 您可以从cron作业运行发送过程并一次执行一批,以便您的邮件服务器不会被淹没,并跟踪已发送的内容

请注意,如何自动发送退回的电子邮件或无效的电子邮件,以便他们可以自动从列表中删除.

如果你发送了很多电子邮件,你肯定会获得一些反弹.


Mic*_*ngh 17

这是建议,而不是答案:使用专用邮件列表软件你会好得多. mailman是一个常用的例子,但像mlmmj这样简单的东西就足够了.发送大量邮件实际上比实际看起来更困难.您不仅需要发送邮件,还必须跟踪"死"地址,以避免您的邮件,或者更糟糕的是,您的邮件服务器被标记为垃圾邮件.出于同样的原因,你必须处理取消订阅的人.

你可以自己实现这些东西,但特别是弹跳处理是困难和无益的工作.使用邮件列表管理器可以使事情变得更容易.

至于如何让你的邮件适合雅虎,这完全是另一回事.尽管存在缺陷,但它们似乎在SPF和DomainKey中都有很大的优势.您可能必须实现它们,这将需要您的邮件服务器管理员的合作.


uso*_*ban 12

您可以考虑将CRON用于此类操作.一次发送大量邮件肯定不好,它可能被检测为垃圾邮件,ddos,崩溃你的服务器等.

所以CRON可能是一个很好的解决方案,一次发送100封邮件,然后等待几分钟,接下来的100封等等.

  • 从CRON运行PHP脚本时,从命令行运行PHP时没有php超时.这意味着您不必每隔几分钟设置一次CRON,而是可以在代码中放入一个睡眠cmd,其中包含100封已发送的电子邮件,然后进入睡眠状态(some_time),脚本将继续运行. (14认同)
  • 支持@Martin声明的一点点补充:http://www.php.net/manual/en/features.commandline.differences.php (2认同)

Nir*_*evy 10

不要使用标准PHP工具向5,000人发送电子邮件.您将在几秒钟内被大多数ISP禁止,甚至从未知道.您应该使用一些邮件列表软件或电子邮件服务提供商.

  • 这可能是真的是的,但是如果你的邮件每小时低于100条消息,那么大多数ISP都不会给你带来太多的悲伤; 然而,只要你滥用他们的网络,那么你就是为了它!只需确保标题符合标准; 不要滥用网络,你就会安全. (2认同)

Con*_*rad 8

你为什么不宁愿使用phplist?它也建立在PHP Mailer之上,很多行业领导者正在使用它.我自己曾经多次使用它向我的客户发送大量邮件.关于phplist的好处是你可以在域级加上时间限制级别来限制你的消息.

我们用几个内部捕获系统完成的工作就是将用户群推送到填充列表,然后每天都有一个cron条目触发给定的邮件.可能性是无穷无尽的,这是开源的绝佳之处!