我正在尝试使用Java发送电子邮件,但是当我在Outlook中阅读电子邮件正文时,它摆脱了我所有的换行符。我将\ n放在行尾,但除此之外,我需要做些特别的事情吗?接收者将始终使用Outlook。
我在microsoft.com上找到了一个页面,该页面说Outlook中有“删除换行符”“功能”,这是否意味着除了取消选中该设置外,没有其他解决方案吗?
谢谢
Answers:
我今天一直在为此而斗争。我们将删除多余的换行符的行为称为“连续”。进行一些实验后发现以下行为:
请注意,我已使用Outlook 2007尝试了所有这一切。YMMV。
因此,如果可能的话,请在所有项目符号的末尾加上标点符号,制表符甚至三个空格。
在换行符(CRLF)之前附加一个(或两个?)制表符(\ t)时,可以在Outlook中强制换行。
例:
This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.
它似乎可以在Outlook 2010上使用。请测试一下是否可以在其他版本上使用。
Microsoft Outlook 2002及更高版本默认情况下会从文本消息中删除“多余的换行符” (kb308319)。也就是说,Outlook似乎只是忽略了文本消息中的换行和/或回车符序列,将所有行放在一起运行。
如果您尝试编写代码,该代码将自动生成将由使用Outlook的人阅读的电子邮件,则可能会导致问题。
例如,假设您要在单独的行中提供清晰的信息,如下所示:
交易需要注意!
发表日期:1/30/2009
金额:$ 12,222.06
TransID:8gk288g229g2kg89邮政编码
:91543
您的Outlook收件人将看到信息全部粉碎,如下所示:
交易需要注意!发表日期:1/30/2009金额:$ 12,222.06 TransID:8gk288g229g2kg89邮政编码:91543
似乎没有一个简单的解决方案。替代方法是:
<br>
。
我一直在努力解决所有上述解决方案,但在这里没有任何帮助,因为我在电子邮件库中结合使用了String变量(来自JTextPane的纯文本)和“ text / html”格式。
因此,解决此问题的方法是使用“文本/纯文本”而不是“文本/ html”,并且根本不需要替换返回字符:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
将文本放入“<pre>
标记”中,Outlook将格式化并正确显示文本。
我在HTML正文的CSS内联中定义了它,例如:
CSS:
pre {
font-family: Verdana, Geneva, sans-serif;
}
我定义了必须设置字体的字体系列。
HTML:
<td width="70%"><pre>Entry Date/Time: 2013-09-19 17:06:25
Entered By: Chris
worklog mania
____________________________________________________________________________________________________
Entry Date/Time: 2013-09-19 17:05:42
Entered By: Chris
this is a new Worklog Entry</pre></td>
尝试这个:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
问候,穆罕默德·拉索尔(Mohammad Rasool)
我有一个很好的解决方案,尝试过,它只是在行尾添加了Char(13),如以下示例所示:
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)