Skip to main content
 首页 » 编程设计

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

2024年01月24日36jiqing9006

我正在使用 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 是更好的解决方案。