【问题标题】:PHP generated emails not delivered to CcPHP 生成的电子邮件未发送到抄送
【发布时间】:2017-06-23 12:10:12
【问题描述】:

我正在使用 PHP 的 mail() 函数来生成邮件。生成的邮件在“收件人”和“抄送”中使用正确的电子邮件 ID 看起来绝对没问题,但邮件只会发送到“收件人”而不是“抄送”。

这里是代码

$headers  = "From: xyz@abc.com \r\n";
$headers .= "Reply-To: xyz@abc.com";
$headers .= "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Cc: email1@abc.com ; email2@abc.com" . "\r\n";
$headers .= "X-Mailer: PHP/". phpversion();
$headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n"; 
mail($to, $subject, $message, $headers);

我们的组织使用 365 发送邮件,自从我们开始迁移以来,这个问题大部分都出现了。我浏览了php邮件日志,对我来说似乎很好。

如何解决这个问题?有什么建议吗?

PS。我觉得这个问题是在我们前段时间搬到 365 之后才出现的。另外,id 'xyz@abc.com'(发件人)是否需要存在?

【问题讨论】:

  • Reply-To 标头之后(或X-Mailer 标头之后)没有\r\n。此外,多个抄送收件人需要每个地址一个 Cc 标头。
  • 我在 Reply-To/X-Mailer 标头之后添加了 \r\n。从来没有听说过每个地址有一个 Cc 标头,是这样吗?
  • 在阅读了更多之后,不,它不是。我一直在发送我的电子邮件,每个收件人都有单独的抄送标头,但您可以使用单个标头。但是,您必须确保地址以逗号分隔,而不是分号。

标签: php office365 phpmailer


【解决方案1】:
$headers .= "Reply-To: xyz@abc.com";

这一行的“\r\n”在哪里?

有关有助于您的团队正确构建电子邮件的适当且标准化的 PHP 邮件库,请查看:

https://github.com/PHPMailer/PHPMailer

【讨论】:

  • 我下载并提取了我的 htdocs 中的 PHPMailer 文件夹。如何用它替换代码中的 sendmail 实例?我是否也需要修改我的 php.ini 文件?
  • 我不是 PHPMailer 专家,但我想你的答案在这里:github.com/PHPMailer/PHPMailer/blob/master/README.md :-)
【解决方案2】:

将您的抄送行中的; 替换为,

$headers .= "Cc: email1@abc.com ; email2@abc" . "\r\n";

或者通过 IMAP 发送您的邮件,类如 PHPMailer https://github.com/PHPMailer/PHPMailer

【讨论】:

  • 替换;在 CC 行中带有 ,。情况没有任何变化。我正在考虑使用 PHPMailer。
猜你喜欢
  • 2012-03-20
  • 2020-10-10
  • 2016-01-12
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 2011-07-24
  • 2015-12-19
相关资源
最近更新 更多