我有一个类似“嗨,\r\n 这是测试\r\n 谢谢”这样的文本我正在使用 MailMessage 类发送邮件。我已将“IsBodyHtml”属性设置为 false。问题是我收到的邮件没有换行符。你能告诉我我错过了什么吗?
8 回答
使用Environment.NewLine
msdn而不是 \r\n。
我们遇到了同样的问题,但是如果您在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");
这是 Outlook 中的一项功能,您可以在 Outlook 中将其关闭。转到选项 - 邮件 - 并在“消息格式”下取消选中“删除纯文本消息中的多余换行符”。
另一种解决方案是在发送邮件时在每行末尾添加三个空格。这似乎让 Outlook 接受它不是额外的换行符。
如果您正在从 Outlook 阅读邮件,可能是 Outlook 正在删除换行符,认为它们是额外的换行符。您是否尝试过从其他软件或网络邮件中读取您的邮件?
我认为,为了能够在邮件中包含换行符,而不仅仅是简单的测试,您需要将 body html 设置为 true。
这可能发生的一个更棘手的原因是我不得不处理:
- 您的邮件服务器会处理外发邮件并将 html 版本添加到您原本纯文本的邮件中
我遇到了类似的问题,我的大部分换行符都在工作,但一个没有。如果我点击回复未显示换行符的电子邮件,回复下方的原始电子邮件文本将显示换行符(因此这表明这是一个 Outlook 问题)。我尝试了 Environment.NewLine 的推荐答案,但并没有改变任何东西。就我而言,在我想要新行的语句末尾添加一个句点,然后放入 \r\n 就可以了。根据我在此讨论中发布的先前链接,Outlook 正在使用一些规则来过滤换行,并且在开始此讨论的问题中,我注意到您的句子末尾没有句点。
我通过 PowerShell 脚本发送电子邮件通知,在 Outlook 中查看邮件时也没有出现任何换行符。对我来说 .ps1 文件中的解决方案是这样的:
$emailMessage.Body = "First Line" + "`r`n" + "Second Line"