我目前正在写一个音乐博客。管理员每2-3天发布一篇新文章。一旦管理员发布了一篇文章,一封群发电子邮件将立即发送给大约5000名订阅者。
实现群发邮件功能的最佳方式是什么?
下面的函数可以工作吗?
function massmail()
{
$content = '...';
foreach ($recipients as $r) {
$_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
mail($r, 'subject', $_content);
}
}
另一个问题:如果所有5000名用户都在使用雅虎邮箱,雅虎会将其视为DDOS攻击并拦截我的SMTP服务器的IP地址吗?
发布于 2009-07-13 07:58:39
首先,使用PHP附带的mail()函数不是最佳解决方案。它很容易被标记为垃圾邮件,您需要设置标题以确保正确发送HTML电子邮件。至于代码片段是否能正常工作,我怀疑如果没有specifying extra headers,您将无法在其中正确地获得HTML代码
我建议你看看SwiftMailer,它支持超文本标记语言,支持不同的mime类型和SMTP身份验证(它不太可能将你的邮件标记为垃圾邮件)。
发布于 2009-07-13 08:01:39
这是建议,而不是答案:你最好使用专用的邮件列表软件。mailman是一个经常使用的例子,但是像mlmmj这样简单的东西就足够了。发送大量邮件实际上是一项比实际看起来更困难的任务。您不仅必须发送邮件,还必须跟踪“死”地址,以避免您的邮件,更糟糕的是,您的邮件服务器,被标记为垃圾邮件。出于同样的原因,你必须处理那些取消订阅的人。
您可以自己实现这些功能,但尤其是反弹处理是一项困难且毫无回报的工作。使用邮件列表管理器将使事情变得容易得多。
至于如何让雅虎喜欢你的邮件,那就完全是另一回事了。尽管有很多缺点,但他们似乎非常看重SPF和DomainKey。您可能必须实现它们,这将需要您的邮件服务器管理员的合作。
发布于 2009-07-13 08:21:28
您可以考虑使用CRON来执行这种操作。一次发送大量邮件肯定不好,它可能会被检测为垃圾邮件、ddos、服务器崩溃等。
所以CRON可能是一个很好的解决方案,一次发送100封邮件,然后等待几分钟,然后再发送100封,等等。
https://stackoverflow.com/questions/1118154
复制相似问题