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
"
учтите, что также расстояние текста от левого поля влияет на реальное расстояние от левого поля тела электронной почты..