MailMessage在outlook中发送了字符串作为正文而没有换行符

时间:2010-10-14 08:32:51

标签: c# mailmessage

HI,我正在尝试使用system.net.mail.mailmessage发送简单通知。我只是将字符串作为消息体传递。但问题是即使已发送多行消息在字符串中具有正确的“\ r \ n”格式信息。邮件 在outlook中打开将显示为一条长单行。但是Outlook中的查看源将以正确的新行格式显示消息。

例如: 原始邮件看起来像:

line1
line 2
line 3

但它会在Outlook中显示如下:

line1 line 2 line 3

从outlook查看来源仍会显示

line1
line 2
line 3

如何使Outlook使用正确的换行信息显示消息?

10 个答案:

答案 0 :(得分:14)

Outlook有时会删除换行符(它通常会弹出一条评论它已经完成了),不确定它何时执行此操作的规则但是我很确定你是否添加.(完全停止)在每一行的末尾它不会删除它们。

实际上,看一下这篇文章,您似乎也可以通过将电子邮件发送为HTML或RTF来解决它:Line breaks are removed in posts made in plain text format in Outlook

答案 1 :(得分:3)

这对我有用

mMailMessage.IsBodyHtml = true;
Literal1.Text = "Dear Admin, <br/>You have recieved an enquiry onyour Website. Following are the details of enquiry:<br/><br/>Name: " + TextBox2.Text + "<br/>Address: " + TextBox3.Text + ", " + TextBox4.Text + "<br/>Phone: " + TextBox5.Text + "<br/>Email: " + TextBox2.Text + "<br/>Query: " + TextBox6.Text+"<br/> Regards, <br/> Veritas Team";
mMailMessage.Body = Literal1.Text;

答案 2 :(得分:2)

让你的字符串如下

"Your string.\n"

ms.IsBodyHtml = false;

但你可以在你的垃圾文件夹中找到它

答案 3 :(得分:2)

//电子邮件正文应为HTML //用中断HTML

替换换行符\ n \ r \ n
{{1}}

答案 4 :(得分:1)

Outlook将始终删除换行符,但可以使用的内容如下:

代替使用:         Environment.Newline 要么         \ n \ r

你应该使用         string MyString + =“这是我的文字”+“%0d%0A”

此%0d%0A将被outlook识别为新行的转义序列。

答案 5 :(得分:0)

将IsBodyHTML设置为false:

ms.IsBodyHtml = false;

默认情况下它是false,但看起来你已经将它设置为true,因为outlook认为它是HTML。

答案 6 :(得分:0)

这对我有用:

    mail.Body = String.Format(@"Some text here:
A new line here  
And another line here");

请注意不要在第2行和第3行缩进。

答案 7 :(得分:0)

我可以通过在问题行之前的行尾添加一些字符串空格来使其工作。

msg.Append("\n some Message" + "   ");
msg.Append("\n another message");

答案 8 :(得分:0)

Necro回答了一个问题,但也可以派上用场。

msg.IsBodyHtml = true;
AlternateView av = AlternateView.CreateAlternateViewFromString(msg.Body, new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Html));
av.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
msg.AlternateViews.Add(av);
AlternateView avPlain = AlternateView.CreateAlternateViewFromString(msg.Body, new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Plain));
avPlain.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
msg.AlternateViews.Add(avPlain); 

答案 9 :(得分:0)

尝试在消息前使用逐字记录“@”:

message.Body = 
@"
line1
line 2
line 3
"

考虑到文本与左边距的距离也会影响电子邮件正文左边距的实际距离。