使用PHP每天发送大约300封电子邮件

时间:2014-03-12 23:27:19

标签: php email

我需要每隔一天最多发送大约300封批量电子邮件,因此我正在考虑使用PHP mail()函数为我创建一个PHP应用程序。

我需要能够在邮件正文中包含与其网站上的域名/链接相对应的变量,并且只发送一次电子邮件,这就是为什么我不使用Mailchimp,因为我不想取消订阅按钮或电子邮件中的任何类似内容。

使用PHP mail()是否可行,我是否应该做些什么来避免被列入黑名单?

1 个答案:

答案 0 :(得分:1)

使用PHP的mail()函数绝对可以实现这一点。

但是,如果您计划使用HTML格式的电子邮件,我强烈建议您使用其中一个准备好的库。我最喜欢的是SwiftMailer

当涉及到黑名单时,最好的选择之一是:

  • 使用明确列入白名单的代理
  • 为每封电子邮件使用不同的代理,旋转尽可能多的代理
  • 确保您在发送电子邮件之间有不同的延迟

后者可以通过以下方法之一完成:

  • 创建一个只在发送消息之间休眠一段时间的脚本

示例

foreach($recipients as $rcp) {
   mail($rcp, 'subject', 'content');
   sleep(rand(1,20));
}

这将从您的队列中发送一条消息,并在两者之间留下1到20秒的不同延迟。

如果您使用此类方法,请确保正确配置了最长执行时间,否则脚本将在一定时间后死亡。

ini_set('max_execution_time', '3600');

这将使您的脚本最多运行一小时。

您的其他选择:

  • 使用定期执行脚本的cron作业

在这种情况下,您可以将当前收件人写入文件,并在每次执行脚本时增加该计数器。

我认为在你的情况下,以前的方法会更合适。

请注意

在某些情况下发送批量或垃圾邮件可能是非法的。正如您在问题的评论中所讨论的那样,您应始终在邮件中提供取消订阅选项(例如链接)。

另请注意,很难判断哪些收件人服务器使用哪种方法来识别可疑客户端/客户端主机。使用上面提供的方法并不能保证目标服务器不会将您列入黑名单。