如何在电子邮件中设置字符串格式,以便Outlook打印换行符?
我正在尝试使用Java发送电子邮件,但是当我在Outlook中阅读电子邮件正文时,它摆脱了我所有的换行符。我将\ n放在行的末尾,但除此之外,我需要做些特别的事情吗?接收方将始终使用Outlook。
我在microsoft.com上找到了一个页面,说Outlook中有一个"删除换行符""功能",这是否意味着除了取消选中该设置外,没有其他解决方案吗?
谢谢
解决方案
尝试使用" \ r \ c"而不是" \ n"。
编辑:我认为@Robert Wilkinson是正确的。 \ r \ n
。内存已不再是过去。
我们需要使用\ r \ n作为解决方案。
\ n在很大程度上对我们有用,但是Outlook有时会像我们所说的那样将其自己删除以消除换行符。
我们需要发送HTML电子邮件。在电子邮件中使用" <br />",我们将始终有换行符。
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
似乎没有一个简单的解决方案。替代方法是:
- 我们可以在每条线之间提供两组换行符。这确实阻止了Outlook将行合并到一行,但是随后在每行之间显示了一条额外的空白行(这产生了相反的问题)。通过"提供两组换行符",我的意思是我们应该使用" \ r \ n \ r \ n"或者" \ r \ r"或者" \ n \ n",但不能使用" \ r \ n"或者" \ n" \ r"。
- 我们可以在电子邮件正文的每一行的开头提供两个空格。这样可以避免在每行之间引入多余的空白行。但是,如果邮件中的每一行都比较短,这将是最好的选择,因为用户可能会在一个非常狭窄的Outlook窗口中预览文本,该窗口会将每一行的末尾环绕到下一行的第一位置,而不会与两个空格缩进的行对齐。此策略已用于一些新闻通讯。
- 我们可以放弃使用纯文本格式,而使用html格式。
我今天一直在为此而斗争。我们将删除多余的换行符的行为称为"继续"。进行一些实验后发现以下行为:
- 每条消息都以连续关闭开始。
- 少于40个字符的行不会触发继续,但是如果继续继续,则将删除其换行符。
- 第40行或者以上的行会继续播放。它保持打开状态,直到发生事件将其关闭为止。
- 以句点,问号,感叹号或者冒号结尾的行将关闭继续。 (Outlook假定这是句子的结尾?)
- 关闭连续性的行将从换行符开始,但是如果长度超过40个字符,则会重新打开连续性。
- 以制表符开头或者结尾的行将关闭连续性。
- 以2个或者更多空格开头的行将关闭连续性。
- 以3个或者更多空格结尾的行将关闭连续。
请注意,我已使用Outlook 2007尝试了所有这一切。YMMV。
因此,如果可能的话,请在所有项目符号的末尾加上标点符号,制表符甚至三个空格。
试试这个:
message.setContent(new String(body.getBytes(), "iso-8859-1"), "text/html; charset=\"iso-8859-1\"");
问候,
穆罕默德·拉索尔(Mohammad Rasool)
我遇到了同样的问题,并找到了解决方案。尝试以下操作:%0D%0A
以添加换行符。
在我的申请中解决
在我的应用程序中,我试图发送一封电子邮件,该邮件的邮件正文是由用户在文本区域中键入的。发送邮件后,Outlook会自动删除用户输入的换行符。
例如,如果用户输入
亚达夫
马赫什
前景显示为
亚达夫·马赫什(YadavMahesh)
解决方法:我将换行符" \ r \ n"更改为" \ par"(记住在RTF代码" \ par"的末尾打空格),并且换行了。
干杯,
马赫什