我正在使用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());
我得到了预期的结果。
有人会知道这些空白行是从哪里来的吗?任何提示都表示赞赏
答案 0 :(得分:0)
PHPMailer 5.2存在不一致的换行符格式问题。尝试使用the 6.0 branch(尚未发布)来避免此问题,或尝试设置$mail->LE = "\r\n";
并确保所有内容使用相同的换行符格式。