如何在C#System.Net.Mail.MailMessage中创建多行体

Mae*_*024 41 c# email

如果创建body属性为

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();

message.Body ="First Line \n second line";
Run Code Online (Sandbox Code Playgroud)

我也试过了

message.Body ="First Line" + system.environment + "second line";
Run Code Online (Sandbox Code Playgroud)

当我收到消息时(使用outlook),这两个都被忽略了.

关于如何获得多条线的任何想法?我正在努力避免使用html编码,以便电子邮件能够更好地使用垃圾邮件过滤器.

谢谢

Gra*_*mas 51

根据drris的评论,如果IsBodyHtml设置为true,则设计可能会忽略标准换行符,我知道你提到避免使用HTML但是尝试使用<br />,即使只是为了看看这是否"解决"了问题 - 那么你可以排除你所知道的:

var message = new System.Net.Mail.MailMessage();
message.Body = "First Line <br /> second line";
Run Code Online (Sandbox Code Playgroud)

您也可以只是尝试设置IsBodyHtmlfalse并确定换行符在那种情况下工作,虽然,除非你将其设置为true明确我敢肯定它默认为false无妨.

另外作为旁注,避免电子邮件中的HTML并不一定有助于通过垃圾邮件过滤器获取邮件,AFAIK - 如果有的话,你做的最多就是确保在布局方面的跨邮件 - 客户端兼容性.要通过垃圾邮件过滤器"玩得开心",还应该考虑其他一些事情; 甚至包括邮件的主题和内容,邮件发送者以及发送邮件的位置和匹配等等.电子邮件根本不会被歧视,因为它标有HTML.

  • 他想避免使用HTML.因此`IsBodyHtml = false`并使用换行符应该是正确的答案. (4认同)

小智 14

使用两个空格开始每个新行将避免Outlook自动删除.

var lineString = "  line 1\r\n";
linestring += "  line 2";
Run Code Online (Sandbox Code Playgroud)

将正确显示:

line 1
line 2
Run Code Online (Sandbox Code Playgroud)

使用它有点笨拙的感觉,但它没有花费太多额外的努力就完成了工作.


Mik*_*ari 12

如果您不需要html中的邮件正文,请将其关闭:

message.IsBodyHtml = false;
Run Code Online (Sandbox Code Playgroud)

然后使用例如:

message.Body = "First line" + Environment.NewLine + 
               "Second line";
Run Code Online (Sandbox Code Playgroud)

但如果由于某种原因需要在html中使用它,请使用html-tag:

message.Body = "First line <br /> Second line";
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说是IsBodyHtml设置。IsBodyHtml设置为true时,System.Environment.NewLine不起作用 (3认同)

Jus*_*ton 5

当我使用 MailMessage 时,我通常喜欢 StringBuilder。添加新行很容易(通过 AppendLine 方法),您可以简单地将 Message 的 Body 设置为 StringBuilder.ToString() (...对于 StringBuilder 的实例)。

StringBuilder result = new StringBuilder("my content here...");
result.AppendLine(); // break line
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了一个 stringbuilder 对象,并为每一行添加了一行,然后将 message.body 分配为等于字符串生成器的 .ToString() 方法。但是当电子邮件出现在 Outlook 中时,它仍然是一行。我可能只需要使用 html。 (3认同)

小智 5

您需要启用 IsBodyHTML

message.IsBodyHtml = true; //This will enable using HTML elements in email body
message.Body ="First Line <br /> second line";
Run Code Online (Sandbox Code Playgroud)