0

我有一个在 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... ; }
4

2 回答 2

1

我会做的是使用一些 SMTP 服务器,比如 google 和 PHPMailer,或者类似的东西。这对你来说可能也是最好的解决方案,因为在 PHP 中使用 mail 函数可能有点危险。许多邮件服务器认为这些电子邮件是垃圾邮件,因为它们不是由已知服务发送的。首先,尝试找出未收到的电子邮件是否已进入垃圾邮件文件夹。如果没有,并且您的时间不允许 PHPMailer 实现,请尝试从 PHP 代码段手动发送电子邮件,看看会发生什么。

于 2012-06-01T15:32:52.120 回答
0

基于此行:

$headers .= "BCC: $emails \r\n";

您将所有收件人放在一个标题行中。

这可能会因至少 3 个原因而失败:

  1. 一旦这一行超过 998 个字符,该邮件就违反了 rfc2822,因此邮件服务器可能会拒绝它。

  2. 大多数 SMTP 服务器对单个邮件中的收件人数量都有限制,因此在某些时候会达到此限制(不过 30 个收件人似乎并不多)。

  3. 电子邮件地址中的任何严重语法错误都可能使整行无效。

此外,了解此处使用的 SMTP 服务器可能会有所帮助。如果您有权访问邮件服务器日志,显然您也应该检查一下。

作为一种解决方法,您可能希望遍历订阅者列表并向该字段中的每个订阅者发送一条不同的消息,To并且根本不使用Bcc。无论如何,这也更好地通过垃圾邮件过滤器。

于 2012-06-01T18:39:06.740 回答