MailMessage отправил строку как тело без перевода строки в outlook - PullRequest
10 голосов
/ 14 октября 2010

Привет, я пытаюсь отправить простое уведомление, используя 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 ]

14 голосов
/ 14 октября 2010

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

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

3 голосов
/ 28 октября 2012

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

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 голосов
/ 13 октября 2015

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

mailMsg.IsBodyHtml = true;
mailMsg.Body = this.Body;
mailMsg.BodyEncoding = System.Text.Encoding.ASCII;
mailMsg.Body = mailMsg.Body.Replace(Environment.NewLine, "<br/>"); 
2 голосов
/ 19 июля 2011

Пусть ваша строка будет такой, как показано ниже

"Your string.\n"

И:

ms.IsBodyHtml = false;

Но вы можете получить ее в папке «Хлам»

1 голос
/ 04 ноября 2011

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

Вместо использования: Environment.Newline или \ n \ r

Вам следует использовать строку MyString+ = "это мой текст" + "% 0d% 0A"

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

0 голосов
/ 09 мая 2017

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

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

Учтите, что расстояние от левого поля также влияет на реальное сопротивление левого поля тела письма.

0 голосов
/ 21 июля 2016

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); 
0 голосов
/ 20 июля 2015

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

0 голосов
/ 04 июня 2015

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

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

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

0 голосов
/ 14 октября 2010

Установите IsBodyHTML в false:

ms.IsBodyHtml = false;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...