10
StringBuffer emailMessage = new StringBuffer("Dear Scott");
emailMessage.append("\r\n");
emailMessage.append("Sending mail over internet");

所以这是我在调试器中检查时的格式化内容

Dear Scott,
Sending mail over internet

但是当我在雷鸟中收到它时,我会在一行中收到完整的消息,如下所示。将内容作为 html 发送时,换行符无法正确解释

 Dear Scott,Sending mail over internet

这是我将消息作为 html 发送的方式

 MimeMessage msg = null;
 msg = new MimeMessage(mailSession);
 msg.setText(body, CHARSET_UTF_8, "html");

如果我只是将文本作为 msg.setText(body, CHARSET_UTF_8) 发送,那么我会在下一行看到正确格式的消息,即“通过 Internet 发送邮件”。我不明白为什么在将文本作为 html 发送时没有正确解释换行符?

4

2 回答 2

20

因为您要发送 HTML 电子邮件,所以您必须使用<br />而不是\r\n,就像经典的HTML 文档(例如.html文件)一样。当您使用 \r\n时,呈现的内容不会打印新行,但邮件的源代码会(反之亦然)。

于 2012-11-13T09:55:53.543 回答
11

HTML 不解释换行符。当您将内容类型设置为“html”时,请使用“<br/>”而不是“\r\n”:

StringBuffer emailMessage = new StringBuffer("Dear Scott");
emailMessage.append("<br/>");
emailMessage.append("Sending mail over internet");
于 2012-11-13T09:50:56.743 回答