我在php中设置了一个页面,用于向在我的网站上注册的电子邮件发送简报。前几天,当我将它发送到30封电子邮件时,代码运行得很好。每个人都收到了电子邮件通讯。两个新人注册了,现在当我尝试发送一个时,它会像在代码中没有任何错误一样发送,但没有人收到新闻通讯。
是否与无效的电子邮件地址有关,无法停止工作?好像其中一个新的无效并关闭它?我没有做任何事情来改变代码,从它工作到前30封电子邮件。我的托管公司每天允许超过250封电子邮件,所以这根本不是问题。
$mailto = "members@example.com" ;
$headers = "From: chris@example.com \r\n";
$headers .= "Reply-To: chris@example.com \r\n";
$headers .= "BCC: $emails \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$from='members@example.com';
$subject="TEST";
$body='<html><body>';
$body.= "<table><tr><td>$content etc...</td></td> </body></html>";
if (mail($mailto,$subject,$body,$headers)) {
code... ; }
else {
code... ; }
答案 0 :(得分:1)
我会做的是使用一些SMTP服务器,比如谷歌和PHPMailer,或类似的东西。这对你来说可能是最好的解决方案,因为在PHP中使用邮件功能可能有点危险。许多邮件服务器认为这些电子邮件是垃圾邮件,因为它们不是由已知服务发送的。 首先,尝试查看未接收的电子邮件是否已落入垃圾邮件文件夹。 如果没有,如果您的时间不允许PHPMailer实现,请尝试从PHP代码段手动发送电子邮件,看看到底发生了什么。
答案 1 :(得分:0)
基于这一行:
$headers .= "BCC: $emails \r\n";
您将所有收件人放入一个标题行。
这可能至少有3个原因失败:
1)一旦此行超过998个字符,该邮件就会违反rfc2822,因此邮件服务器可能会拒绝该邮件。
2)大多数SMTP服务器对单个邮件中的收件人数量有限制,因此在某些时候会达到此限制(但是,30个收件人看起来并不多)。
3)电子邮件地址中的任何严重语法错误都可能导致整行无效。
此外,了解此处使用的SMTP服务器可能会有所帮助。如果您有权访问邮件服务器日志,显然您也应该检查它。
作为一种变通方法,您可能需要遍历订阅者列表,并向To
字段中的每个订阅者发送一条不同的消息,而根本不使用Bcc
。无论如何,这也更好地通过垃圾邮件过滤器。