【问题标题】:PHPMailer plain text email adds new line at the endPHPMailer 纯文本电子邮件在末尾添加新行
【发布时间】:2016-04-07 10:29:59
【问题描述】:

我正在尝试删除使用 PHPMailer 发送的纯文本电子邮件末尾的换行符。

我正在做的是:

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->isHTML(false);  
$mail->Body = $xxx1."\r\n".$xxx2."\r\n".$xxx3;
$mail->setFrom("no-reply@xxx.xx", "xxx");
$mail->addReplyTo("no-reply@xxx.xx", "xxx");
$mail->addAddress($to, $name);
$mail->Subject = $topic;
$mail->send();  

一切都很好,除了在消息正文之后添加的新行,它类似于:

msg screenshot

也许有人知道如何从邮件末尾删除换行符?

谢谢!

编辑: $xxx3 变量是传递给邮件发送函数的参数。它设置为“否”或“是”。

【问题讨论】:

  • 你的 $xxx3 变量来自哪里?
  • 这是一个传递给邮件发送函数的参数。在简单的 if/else 语句中将其设置为“否”或“是”(这是表单免责声明复选框表示)
  • 你可以使用:trim($xxx1."\r\n".$xxx2."\r\n".$xxx3, " \r\n") as Body

标签: php email phpmailer plaintext


【解决方案1】:

PHPMailer 在组装消息的 MIME 结构时确实添加了换行符。请参阅createBody 方法。我认为有一个 RFC 要求,即消息正文必须以换行符结尾(现在不记得到底是哪一个),所以总是添加一个以确保。如果这很重要,我建议您先去掉尾随换行符:

$mail->Body = rtrim($xxx1."\r\n".$xxx2."\r\n".$xxx3, "\r\n");

【讨论】:

  • 嗨,谢谢,我试着按照你说的做,但是结果是一样的。你认为我应该考虑编辑 phpMailer 文件吗?
  • 你可以在不编辑 PHPMailer 文件的情况下做到这一点 - 只需创建一个子类,将 createBody 方法复制到其中并根据需要进行编辑。如果rtrim 没有做任何事情,则表明Body 没有尾随中断,PHPMailer 可能会添加两个。
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多