PHPMailer - 如何在altbody中添加换行符?

8

我该如何添加换行符?

我正在使用以下代码:

$mailbody=$username."\r\n";
$mailbody.=$email."\r\n";

$altbody=$username."\r\n";
$altbody.=$email."\r\n";

但是换行符并不存在。

我正在使用$altbody,因为我使用的接收邮件的软件不支持HTML,只能读取纯文本,所以$altbody是当电子邮件阅读器不支持HTML时的正文,所以我不能使用BR标签...

有什么想法吗?

7个回答

11

通常在普通文本邮件中,只需使用\n即可实现换行。


但是在html邮件的$mailbody中应该使用<br/>标签来表示换行。


2
我不能在非 HTML 邮件客户端中使用 <br/>,某些原因会删除 \r 和 \n。 - Thomas Hardy
1
来晚了。我有同样的问题。因为在设置AltBody之后调用了msgHTML()函数,所以\n被去掉了,而msgHTML()会重新创建AltBody。通过先调用msgHTML()函数,然后再设置AltBody来解决了这个问题。 - Jan Ehrhardt

0
使用PHPMailer时,您需要使用整个包含整个<html>块。请尝试以下内容:
$msg = "<html><body>
Type your messsage here.<br><br>
Sincerely,<br>
<br>
Contributor
</body></html>";

0

我在使用HTML的textarea发送电子邮件时遇到了类似的问题。通过使用php的nl2br函数解决了这个问题。


0
你之前有没有代码来格式化消息正文?你可能无意中删除了所有的HTML标签和所有的\(例如,如果你使用了stripslashes)。

0
你可以尝试使用heredoc,就像这样。
$altbody = <<<MAIL
Hello $username,

Welcome to example.com!
MAIL;

或者

$altbody = <<<MAIL
Hello $username,\nWelcome to example.com!
MAIL;

0
$text  = $sender_name."<br>";
$text .=$reply_to_email."<br>";
$text .= $Mobile_No."<br>";
$text .= $message."<br>";

1
这里缺少一个起始引号。 - Matt
OP明确表示他们不能使用<br>标签,因为他们的软件不支持HTML。 - Al.G.

0
这并没有直接回答问题,但它回答了我来到这篇文章的问题(而且我还不能留言):
我使用了单引号,但 PHP 以不同的方式解释单引号和双引号。
尝试像 "\n" 这样使用双引号作为 AltBody,而不是 '\n'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接