MailMessage отправил строку как тело без новой строки в outlook

Привет, я пытаюсь отправить простое уведомление с помощью системы.сеть.почта.почта. Я просто передаю строку как тело сообщения. Но проблема в том, что многострочное сообщение было отправлено с правильной информацией о формате "rn" в строке. Почта открыт в outlook будет отображаться как длинная одна строка. Но просмотр источника в outlook отобразит сообщение с правильным новым форматом строки.

например: исходное сообщение будет выглядеть так:

line1
line 2
line 3

но это будет отображается в Outlook, таких как:

line1 line 2 line 3

просмотр источника из outlook по-прежнему будет отображаться

line1
line 2
line 3

что я должен сделать, чтобы outlook отображал сообщение с правильной информацией о новой строке?

10 ответов


Outlook иногда удаляет новые строки (обычно появляется комментарий, что он это сделал), не уверен точно о правилах, когда он это делает, но я уверен, если вы добавите . (полная остановка) в конце каждой строки он не удалит их.

на самом деле, глядя на эту статью, кажется, что вы также можете решить ее, отправив электронные письма как HTML или RTF: разрывы строк удаляются в сообщениях, сделанных в текстовом формате в Outlook


это сработало для меня

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;

имейте строку, как показано ниже

"Your string.\n"

и:

ms.IsBodyHtml = false;

но вы можете получить его в папку нежелательной почты


Outlook всегда будет удалять разрывы строк, однако можно использовать следующее:

вместо использования: Окружающая среда.Новая строка или \n\r

вы должны использовать string MyString + = "это мой текст" + "%0d%0A"

этот %0d%0A будет распознан outlook как escape-последовательность для новой строки.


/ / тело электронной почты должно быть HTML // заменяет символы новой строки \n\r на break HTML

mailMsg.IsBodyHtml = true;
mailMsg.Body = this.Body;
mailMsg.BodyEncoding = System.Text.Encoding.ASCII;
mailMsg.Body = mailMsg.Body.Replace(Environment.NewLine, "<br/>"); 

установите для IsBodyHTML значение false:

ms.IsBodyHtml = false;

по умолчанию это false, но, похоже, вы установили его в true где-то, как outlook думает, что это HTML.


это сработало для меня:

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

просто будьте осторожны, чтобы не отступать на 2-й и 3-й строке.


я смог заставить его работать, добавив несколько строковых пробелов в конце строки до проблемной строки.

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

Necro ansering вопрос, но может пригодиться и для некоторых.

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); 

попробуйте использовать оператор verbatim"@ " перед вашим сообщением:

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

учтите, что также расстояние текста от левого поля влияет на реальное расстояние от левого поля тела электронной почты..