以纯文本格式发送邮件时忽略换行符

时间:2011-07-13 14:45:40

标签: c# asp.net mailmessage

我有一个文本,如“你好,\ r \ n这是测试\ r \ n谢谢”我正在使用MailMessage类发送邮件。我将“IsBodyHtml”属性设置为false。问题是我收到的邮件没有换行符。你能让我知道我错过了什么吗?

8 个答案:

答案 0 :(得分:16)

使用Environment.NewLine msdn代替\ r \ n。

答案 1 :(得分:8)

我们遇到了同样的问题,但是如果你在 String 中同时定义你的消息,而不是 StringBuilder ,你可以像这样定义你的消息:

string message = string.Format(
@"First Line: {0}
Second Line: {1}
ThirdLine: {2}", firstValue, secondValue, thirdValue);

像这样定义消息体,并设置 IsBodyHtml = false ,将为您提供所需的新行。

否则,请使用 StringBuilder

var sb = new StringBuilder();
sb.AppendLine("FirstLine");
sb.AppendLine("SecondLine");

答案 2 :(得分:4)

这是Outlook中的一项功能,您可以在Outlook中将其关闭。转到选项 - 邮件 - 并在"消息格式"取消选中"删除纯文本消息中的额外换行符"。

另一种解决方案是在发送邮件时在每行的末尾添加三个空格。这似乎让Outlook接受它不是一个额外的换行符。

答案 3 :(得分:2)

如果您正在从Outlook阅读邮件,可能是Outlook正在删除换行符,认为它们是额外的换行符。您是否尝试过使用其他软件(或者是网络邮件)阅读邮件?

答案 4 :(得分:0)

为了能够合并换行符,而不仅仅是在邮件中进行简单测试,我认为你需要将body html设置为true。

答案 5 :(得分:0)

这可能发生在我必须处理的更棘手的原因:

  • 您的邮件服务器操纵外发邮件并将html版本添加到另外的纯文本邮件

答案 6 :(得分:0)

我遇到了类似的问题,我的大部分换行都在工作,但其中一个没有。如果我点击了未显示换行符的电子邮件的回复,则回复下方的原始电子邮件文本将显示换行符(因此这表明这是一个展望问题)。我尝试了Environment.NewLine的推荐答案,并且不能改变任何东西。在我的情况下,在语句的末尾添加一个句点,我想要新行,然后放入\ r \ n就可以了。根据我在此讨论中发布的上一个链接,Outlook正在使用一些规则来过滤掉换行符,而在开始讨论的问题中,我注意到您的句子末尾没有句号。

答案 7 :(得分:0)

我通过PowerShell脚本发送电子邮件通知,在Outlook中查看邮件时也没有获得任何换行符。 对我来说,.ps1文件中的解决方案是:

$emailMessage.Body = "First Line" + "`r`n" + "Second Line"