添加bbc时出现Mail()错误


Mail() error when adding bbc

我有一个向特定用户发送电子邮件的邮件脚本。我从mysql数据库中获取电子邮件。

当将电子邮件发送给一个人时,电子邮件设置工作正常。当只是使用to时:并且没有bcc:

但当我插入bbc的一行时:我得到了一个错误:

$headers .= "Bcc: ". implode(", ", $recipients) ."'r'n"; <-- Error happens here

我试过删除内爆中的空格,也检查过所有的电子邮件。它们都是用逗号分隔的有效

我还尝试插入:error_get_last(),但该错误没有返回任何贵重物品。数组为空。所以我真的看不出错误应该在哪里。

我的代码是:

$con=mysqli_connect("","","","");
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT email FROM users WHERE receive_email = 1") 
or die(mysqli_error());
/* Details for emails */
$name = "domain.com";
$email = "info@domain.com" ;
/* End of details */
$recipients = array();
while($row = mysqli_fetch_array($result)) {
    $recipients[] = $row["email"];
}
$to .= "info@domain.com";
$subject .= "Domain.com account notification";
$headers .= "MIME-Version: 1.0'r'n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1'r'n";
$headers .= "From: " . $name . "'r'n";
$headers .= "Reply-To: ". $email . "'r'n";
$headers .= "Bcc: ". implode(", ", $recipients) ."'r'n"; <-- Error happens here
$headers .= "X-Mailer: PHP/" . phpversion(); 
$message .= '
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Domain.com</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body style="margin: 0; padding: 0;">
</body>
</html>
';
$send_email = mail($to, $subject, $message, $headers);
if(!$send_email) {   
    echo "Error<br>";
    echo implode(', ', $recipients);
} else {
    echo "Success<br>";
    echo implode(', ', $recipients);
}

这不是解决您问题的具体方案,但PHP Mail功能的实现非常非常糟糕,并且存在各种缺陷和问题,因为"电子邮件"通常与"网页"一样广泛,请阅读来自mailchimp(http://blog.mailchimp.com/background-images-and-css-in-html-email/),通常涉及电子邮件的主题,特别是HTML电子邮件,但除此之外,电子邮件头还存在大量问题,这些问题需要完全正确才能交付。

这是一个巨大的雷区,如果我不是一个如此自豪的程序员,我经常会选择Mailchimp或类似的。

但是,有一个解决方案。查找PHPMailer(https://github.com/PHPMailer/PHPMailer)下载并安装它,我发现它对我的PHP代码100%有效,每次都会发送电子邮件,并有明确的错误描述和报告。

我认为发送任何电子邮件都需要指定一个有效的FROM服务器和FROM名称/电子邮件地址。

祝好运