【发布时间】: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->send(); echo "SUCCESS"; 替换为
$mail->preSend();
echo htmlspecialchars($mail->getSentMIMEMessage());
我得到了预期的结果。
有人知道这些空白行是从哪里来的吗?任何提示表示赞赏
【问题讨论】:
-
我记得前段时间有这样一个问题,但我这辈子都不记得问题出在哪里了,我确实记得发表过评论或答案。我在问题中添加了“linux”标签,因为它与问题相关。我会尝试在我的许多答案中找到它。