我正在使用 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);
}
我也尝试过使用 string.Format()。
对于上面的每个例子,我得到了相同的结果。没有生成新行。
然而,当我尝试以下操作时,我得到了预期的结果。一个新行,中间有一个空行。
foreach (var message in messages)
{
body.AppendLine(message + System.Environment.NewLine);
}
为什么要这样做,我该怎么做才能每次只换一行?
更新:
所以我发现 Outlook 和可能的 Gmail(尚未测试其他)实际上会删除一些换行符,而不是其他的。有谁知道他们为什么或如何确定要删除的内容?
请您参考如下方法:
当我在 Outlook 中查看电子邮件时,我收到一条很小的信息消息,上面写着“此邮件中的额外换行符已被删除”以及恢复它们的选项。 Gmail 没有给出这样的指示(我发现),但我必须假设它也删除了它们。
有趣的是,我在正文的其他地方有换行符,但效果如预期,只有循环中的换行符被认为是“额外的”。
我修改了我的代码以使用 html 构建电子邮件正文。
IsBodyHtml = true
如果有人知道防止这种情况发生的方法,或者是什么导致某些换行符被删除,请告诉我。
更新:
一旦我知道我在找什么,我就找到了this有助于解释事物并提供一些替代解决方案的帖子。我没有尝试其中任何一个,因为我认为在我的情况下使用 html 是更好的解决方案。
