从电子邮件正文中删除换行符

aw0*_*w04 1 c# outlook gmail stringbuilder newline

我正在使用System.Net.Mail.MailMessage该类生成一个简单的电子邮件,并使用StringBuilder.我正在循环string[]并尝试每次添加一个新行.我遇到的问题是我似乎每次都无法生成一个新行.我可以得到两个或没有.

我尝试过的:

foreach (var message in messages)
{
    body.AppendLine(message);
}

foreach (var message in messages)
{
    body.Append(message + "\n");
}

foreach (var message in messages)
{
    body.Append(message + System.Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)

我也试过了string.Format().

对于上面的每个例子,我得到相同的结果.没有生成新行.

但是,当我尝试以下操作时,我得到了预期的结果.中间有空行的新行.

foreach (var message in messages)
{
    body.AppendLine(message + System.Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)

为什么要这样做,我该怎么办才能每次只获得一条新线?

更新:

所以我发现Outlook和可能的Gmail(没有测试过其他人)实际上是删除了一些换行而不是其他换行符.有谁知道他们为什么或如何确定要删除的内容?

在此输入图像描述

aw0*_*w04 7

当我在Outlook中检查电子邮件时,我收到一条小信息,上面写着"此消息中的额外换行符被删除"以及恢复它们的选项.Gmail没有给出这样的指示(我发现),但我必须假设它也删除了它们.

有趣的是,我身体其他地方的换行符按预期工作,只有循环中的换行符被视为"额外".

我修改了我的代码以使用html构建电子邮件正文.

IsBodyHtml = true
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何防止这种情况,或者导致某些换行符被删除的原因,请告知我们.

更新:

一旦我知道我在寻找什么,我发现这篇文章有助于解释事情并提供一些替代解决方案.我没有尝试过任何一个,因为我认为在我的情况下使用html是更好的解决方案.