我正在尝试用 Java 发送电子邮件,但是当我在 Outlook 中阅读电子邮件正文时,它摆脱了我所有的换行符。我将 \n 放在行尾,但除此之外我还需要做什么特别的事情吗?接收者将始终使用 Outlook。
我在 microsoft.com 上找到了一个页面,上面写着 Outlook 中有一个“删除换行符”“功能”,这是否意味着除了取消选中该设置之外没有其他解决方案可以解决这个问题?
谢谢
我正在尝试用 Java 发送电子邮件,但是当我在 Outlook 中阅读电子邮件正文时,它摆脱了我所有的换行符。我将 \n 放在行尾,但除此之外我还需要做什么特别的事情吗?接收者将始终使用 Outlook。
我在 microsoft.com 上找到了一个页面,上面写着 Outlook 中有一个“删除换行符”“功能”,这是否意味着除了取消选中该设置之外没有其他解决方案可以解决这个问题?
谢谢
您需要\r\n
用作解决方案。
在换行符 (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
似乎没有一个简单的解决方案。替代方案是:
我遇到了同样的问题,并找到了解决方案。试试这个: %0D%0A
添加换行符。
我使用了 html 换行符而不是 "\n" 。它工作得很好。
添加 "\t\r\n" ( \t 表示 TAB) 而不是 "\r\n" 在 Outlook 2010 上对我有用。注意:在每行末尾添加 3 个空格也可以做同样的事情,但这看起来像是一个编程技巧!
诀窍是使用encodeURIComponent()
js的功能:
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
结果:
FirstLine
SecondLine
ThirdLine
对于 Outlook 2010 及更高版本,请使用\t\n而不是 \r\n。
您需要发送 HTML 电子邮件。<br />
在电子邮件中使用s,您将始终有换行符。
如果你可以添加一个'.' (点)字符,这似乎可以防止 Outlook 破坏文本格式。
尝试\r\c
代替\n
.
编辑:我认为@Robert Wilkinson 说得对。\r\n
. 记忆力已经不是以前的样子了。
这\n
在很大程度上对我们有用,但 Outlook 有时会自行删除您所说的换行符。
我也遇到了纯文本/文本邮件类型的问题。早些时候,我使用了 "\n\n" 但有两个换行符。然后,我使用了 "\t\n" 并且它起作用了。我StringBuffer
在java中使用来附加内容。
内容打印在 Outlook 2010 邮件的下一行。
我一直在努力解决上述所有解决方案,但在这里没有任何帮助,因为我在我的电子邮件库中使用了一个字符串变量(来自 JTextPane 的纯文本)和“text/html”格式。
所以,这个问题的解决方案是使用“text/plain”,而不是“text/html”,根本不需要替换返回字符:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
将文本放入<pre>
标签,Outlook 将正确格式化和显示文本。
我在 HTML Body 中的 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>
因为它是一个查询,所以只有百分比转义字符有效,这意味着 %0A 给你一个换行符。例如,
<a href="mailto:someone@gmail.com?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
我也遇到了纯文本/文本邮件类型的问题。Form Feed\f
对我有用 。
有时您必须输入 \r\n 两次才能强制 Outlook 进行中断。
这将添加一个空行,但所有行都将中断。
\r\n除非您将正文类型设置为文本,否则将无法使用。
message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);
我遇到了同样的问题,这里是解决它的代码:
\t\n - for new line in Email service JavaMailSender
String mailMessage = JSONObject.toJSONString("Your message").replace(",", "\t\n").trim();
在我的申请中解决
在我的应用程序中,我试图发送一封电子邮件,其邮件正文由用户在文本区域中键入。发送邮件时,Outlook 会自动删除用户输入的换行符。
例如,如果用户输入
Yadav
Mahesh
Outlook 将其显示为
YadavMahesh
解决方案:我将换行符“\r\n”更改为“\par”(记住在RTF代码“\par”末尾打空格)并重新设置换行符。
干杯,
马赫什
尝试这个:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
问候,穆罕默德·拉苏尔·贾维德
我有一个很好的解决方案,我尝试过,它只是在行尾添加 Char(13) ,如下例所示:
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
如果消息是文本/纯文本使用,\r\n 应该可以工作;如果消息类型是 text\html,请使用< p/>
如果需要使用没有 html 编码的格式化文本来完成工作。通过以下场景可以轻松实现,即动态创建 div 元素并使用<pre></pre>
html 元素保持格式。
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
不确定上面是否提到过,但 Outlook 有一个名为“删除纯文本消息中的额外换行符”的复选框设置,默认情况下处于选中状态。对于不同版本的 Outlook,它位于不同的位置,但对于 2010,请转到“文件”选项卡。选择“选项 => 邮件”向下滚动到“消息格式”取消选中复选框。
我今天一直在与这个斗争。让我们将删除额外换行符的行为称为“延续”。一些实验发现以下行为:
请注意,我在 Outlook 2007 中尝试了所有这些。YMMV。
因此,如果可能,请以句子终止标点符号、制表符或什至三个空格来结束所有项目符号项。