【问题标题】:Mail broken by newlines after sending with PHPMailer使用 PHPMailer 发送后邮件被换行符破坏
【发布时间】:2017-02-20 02:51:02
【问题描述】:

我正在使用 PHPMailer 来发送邮件,如下所示

$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
$mail->isHTML();

$mail->setFrom('from@server.com', 'server');
$mail->addReplyTo('user@myfavoritemailprovider.com', 'user');
$mail->addAddress('admin@server.com');
$mail->Subject = $subject;

$mail->AltBody = getPlainMail($data);
$mail->Body = getHTMLMail($data);

try {
  $mail->send();
  echo "SUCCESS";
} catch(phpmailerException $e) {
  echo "FAILURE: ", $e->errorMessage();
}

这非常适合在我的旧 Mac OS X 上使用 MAMP 发送邮件,但是当我在应该结束的 Linux 服务器上运行此代码时,邮件会发生一些奇怪的事情。内容中随机出现的空格和未随机应用的样式被证明是收到的邮件正文中每两行之间有空白行的结果。对于一个简单的例子,这可能看起来像

<!DOCTYPE html><html><head><title>Test</title></head><bo=

dy><main><section style=3D"color:red;"><p style=3D"color=

:black;">test</p></section></main></body></html>

应该是这样的

<!DOCTYPE html><html><head><title>Test</title></head><bo=
dy><main><section style=3D"color:red;"><p style=3D"color=
:black;">test</p></section></main></body></html>

为了正确。我试图弄清楚这些空白行是从哪里来的,但我什么也找不到。最奇怪的事情甚至可能是当我将$mail-&gt;send(); echo "SUCCESS"; 替换为

$mail->preSend();
echo htmlspecialchars($mail->getSentMIMEMessage());

我得到了预期的结果。

有人知道这些空白行是从哪里来的吗?任何提示表示赞赏

【问题讨论】:

  • 我记得前段时间有这样一个问题,但我这辈子都不记得问题出在哪里了,我确实记得发表过评论或答案。我在问题中添加了“linux”标签,因为它与问题相关。我会尝试在我的许多答案中找到它。

标签: php linux email phpmailer


【解决方案1】:

PHPMailer 5.2 存在换行格式不一致的问题。尝试使用the 6.0 branch(尚未发布)来避免问题,或者尝试设置$mail-&gt;LE = "\r\n"; 并确保您的所有内容使用相同的换行符格式。

【讨论】:

  • 设置$mail-&gt;LE = "\r\n" 只会导致更多的空行。尤其是在 content-type 等声明周围(阅读:邮件的正文变成了带有很多空行的原始 MIME 正文)。让我们看看 6.0 分支提供了什么...
  • 6.0分支不发邮件是不是巧合避免了问题? echo "SUCCESS" 已执行,但从服务器执行时我没有收到任何邮件。在我当地的 MAMP 中,它确实按预期工作......
  • 如果您通过 SMTP 提交到 localhost 会发生什么?试试$mail-&gt;isSMTP(); $mail-&gt;Host = 'localhost';。我见过各种 mail() 在 SMTP 没有破坏内容的情况下。
  • 在我的网站上浏览了一番后,我设法用 6.0 分支发送了一封邮件,但它与设置 $mail-&gt;LE = "\r\n" 存在相同的问题。
  • 您确定问题出在提交阶段吗? PHPMailer 只调用 mail(),所以如果你输入的内容看起来正确,那么它一定是在那之后发生的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 2014-11-22
  • 2011-12-07
  • 2014-04-28
相关资源
最近更新 更多