13

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

4

8 回答 8

18

使用Environment.NewLinemsdn而不是 \r\n。

于 2011-07-13T14:47:56.810 回答
10

我们遇到了同样的问题,但是如果您在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");
于 2011-07-13T14:53:50.507 回答
5

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

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

于 2017-11-03T15:04:50.980 回答
2

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

于 2011-07-13T14:56:28.403 回答
0

我认为,为了能够在邮件中包含换行符,而不仅仅是简单的测试,您需要将 body html 设置为 true。

于 2011-07-13T14:48:05.030 回答
0

这可能发生的一个更棘手的原因是我不得不处理:

  • 您的邮件服务器会处理外发邮件并将 html 版本添加到您原本纯文本的邮件中
于 2013-02-18T11:01:34.560 回答
0

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

于 2015-01-23T21:03:06.063 回答
0

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

$emailMessage.Body = "First Line" + "`r`n" + "Second Line"
于 2017-06-01T07:31:29.627 回答