【问题标题】:Mail() error when adding bbc添加 bbc 时出现 Mail() 错误
【发布时间】:2015-03-25 13:17:24
【问题描述】:

我有一个邮件脚本可以向特定用户发送电子邮件。我从 mysql 数据库中收到电子邮件。

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

但是当我插入带有 bbc: 的行时,我得到一个错误:

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

我已尝试删除 implode 中的空间并检查所有电子邮件。它们都是有效的,用逗号分隔

我还尝试插入: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);
}

【问题讨论】:

  • $headers .= "密件抄送:"。内爆(", ", $recipients) ."\r\n";
  • 你得到什么错误?
  • 您检查过$recipients 变量,是否每个元素都包含有效的电子邮件地址?
  • 您是否尝试删除 implode 中的空间?内爆(", ", $recipients) => 内爆(",", $recipients)
  • 我已经检查了两个 $recipents 变量。所有电子邮件均有效且后跟逗号和空格。还试图删除空间。使用密件抄送时仍然出错

标签: php mysql email


【解决方案1】:

这不是针对您的问题的特定解决方案,但是 PHP 邮件功能确实非常糟糕地实现并且存在各种缺陷和问题,因为“电子邮件”通常与“网页”一样广泛,请阅读一些文章来自 mailchimp (http://blog.mailchimp.com/background-images-and-css-in-html-email/) 等来源,它们通常涉及电子邮件主题,特别是 HTML 电子邮件,但除此之外,电子邮件标头还有很多问题需要解决完全正确地启用交付。

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

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

我会说发送任何电子邮件来限定这一点 - 您需要指定有效的 FROM 服务器和 FROM 名称/电子邮件地址。

祝你好运

【讨论】:

  • 这听起来像是一个插件,但这不是广告。我真的很喜欢 PHPMailer。探索它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多