我目前正在写一个音乐博客。管理员每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个订户都使用Yahoo Mail,雅虎会将其视为DDOS攻击并阻止我的SMTP服务器的IP地址吗?
首先,使用PHP附带的mail()函数不是最佳解决方案。它很容易被标记为垃圾邮件,您需要设置标题以确保正确发送HTML电子邮件。至于代码片段是否会起作用,它会,但我怀疑你会在没有specifying extra headers的情况下正确地获取HTML代码
我建议你看看SwiftMailer,它支持HTML,支持不同的mime类型和SMTP身份验证(不太可能将你的邮件标记为垃圾邮件)。
你可以使用swiftmailer。通过使用批处理。
<?php
$message = Swift_Message::newInstance()
->setSubject('Let\'s get together today.')
->setFrom(array('[email protected]' => 'From Me'))
->setBody('Here is the message itself')
->addPart('<b>Test message being sent!!</b>', 'text/html');
$data = mysql_query('SELECT first, last, email FROM users WHERE is_active=1') or die(mysql_error());
while($row = mysql_fetch_assoc($data))
{
$message->addTo($row['email'], $row['first'] . ' ' . $row['last']);
}
$message->batchSend();
?>
为什么要打扰自己?这是一个博客,只需使用Google Feedburner,它会通过电子邮件自动向订阅者推送更新。
它是免费的,它使用谷歌的基础设施。不能比这更好。我将它用于我的一些网站/博客,它的工作非常好。
缺点是它似乎没有积极开发,也不再受支持。如果你认真对待自己的业务,我建议你不要去商业电子邮件列表。
我会将所有电子邮件插入数据库(有点像队列),然后像在代码中一样处理它们(如果你想使用swiftmailer或phpmailer等,你也可以这样做。)
发送每封邮件后,更新数据库以记录发送的日期/时间。
首先将它们放入数据库中
请注意,如何自动发送退回的电子邮件或无效的电子邮件,以便他们可以自动从列表中删除。
如果你发送了很多电子邮件,你肯定会获得一些反弹。
您可以考虑将CRON用于此类操作。一次发送大量邮件肯定不好,它可能被检测为垃圾邮件,ddos,崩溃你的服务器等。
所以CRON可能是一个很好的解决方案,一次发送100封邮件,然后等待几分钟,接下来的100封等等。
不要使用标准PHP工具向5,000人发送电子邮件。您将在几秒钟内被大多数ISP禁止,甚至从未知道。你应该使用一些邮件列表软件或Email Service Provider做到这一点。
你为什么不宁愿使用phplist?它也建立在PHP Mailer之上,很多行业领导者正在使用它。我自己曾经多次使用它向我的客户发送大量邮件。关于phplist的好处是你可以在域级加上时间限制级别来限制你的消息。
我们用几个内部捕获系统完成的工作就是将我们的用户群推送到填充列表,然后每天都有一个cron条目触发给定的邮件。可能性是无穷无尽的,这是开源的绝佳之处!
梨包也是:
http://pear.php.net/package/Mail_Mime http://pear.php.net/package/Mail http://pear.php.net/package/Mail_Queue
下。
PS:不要使用mail()发送5000封电子邮件。除了其他人所说的,这是非常低效的,因为mail()为每个电子邮件集创建一个单独的套接字,甚至是同一个MTA。
另请参阅PHPmailer类。 PHPMailer
我已经使用Lotus Notus
和PHP
做到了。如果您有权访问邮件服务器,或者您可以向mail server
管理员请求某些内容,则此解决方案有效:
1)在mail server
中创建一个组:“Sales Department”。
2)向group
分配您需要在该组中的帐户。
3)为该组分配一个互联网地址:[email protected]。
4)使用mail函数创建PHP脚本:
$ to =“[email protected]”;
邮件($ to,$ subject,$ message,$ headers);
它对我有用,并且该组中包含的所有帐户都收到了邮件。
最好的运气。