Разрывы строк игнорируются при отправке почты в виде простого текста - PullRequest
12 голосов
/ 13 июля 2011

У меня есть текст типа «Привет, \ r \ n, это тест \ r \ n Спасибо». Я отправляю почту, используя класс MailMessage.Я установил для свойства IsBodyHtml значение false.Проблема в том, что я получаю письма без разрывов строк.Можете ли вы дать мне знать, что мне не хватает?

Ответы [ 8 ]

16 голосов
/ 13 июля 2011

Используйте Environment.NewLine msdn вместо \ r \ n.

8 голосов
/ 13 июля 2011

У нас была та же проблема, но если вы определили свое сообщение одновременно в String , а не в StringBuilder , вы можете определить свое сообщение следующим образом:

string message = string.Format(
@"First Line: {0}
Second Line: {1}
ThirdLine: {2}", firstValue, secondValue, thirdValue);

Определение тела сообщения, подобного этому, и установка IsBodyHtml = false даст вам новые строки, которые вы хотите.

В противном случае используйте StringBuilder

var sb = new StringBuilder();
sb.AppendLine("FirstLine");
sb.AppendLine("SecondLine");
4 голосов
/ 03 ноября 2017

Это функция в Outlook, вы можете отключить ее в Outlook. Перейдите в Параметры - Почта - и в разделе «Формат сообщения» вы снимите флажок «Удалить лишние разрывы строк в текстовых сообщениях».

Другое решение - добавить три пробела в конце каждой строки при отправке почты. Похоже, это заставляет Outlook признать, что это не дополнительный разрыв строки.

2 голосов
/ 13 июля 2011

Если вы читаете свою почту из Outlook, это может быть Outlook, который удаляет разрывы строк, считая их дополнительными разрывами строк.Вы пытались читать ваши письма из другого программного обеспечения - или, возможно, из веб-почты?

0 голосов
/ 01 июня 2017

Я отправлял уведомление по электронной почте через скрипт PowerShell, а также не получал разрывов строк при просмотре почты в Outlook. Для меня решение в файле .ps1 было таким:

$emailMessage.Body = "First Line" + "`r`n" + "Second Line"
0 голосов
/ 24 января 2015

У меня была похожая проблема, когда работало большинство разрывов строк, но не было. Если я нажму на ответ на электронное письмо, в котором не будет разрывов строк, в исходном тексте электронной почты под ответом будет отображаться разрыв строки (поэтому это указывает на проблему с внешним видом). Я попробовал рекомендованный ответ Environment.NewLine, и он НЕ изменил ничего. В моем случае добавление точки в конце оператора, где я хотел новую строку, а затем вставка \ r \ n, сделали свое дело. По предыдущей ссылке, которую я разместил в этом обсуждении, Outlook использует некоторые правила для фильтрации перевода строки, и в вопросе, который начал это обсуждение, я заметил, что у вас нет точки в конце предложения.

0 голосов
/ 18 февраля 2013

Это может быть более хитрая причина, с которой мне пришлось иметь дело:

  • Ваш почтовый сервер управляет исходящими сообщениями и добавляет HTML-версию к вашему текстовому сообщению
0 голосов
/ 13 июля 2011

Чтобы иметь возможность включать в свою почту разрывы строк, а не просто тестирование, я думаю, вам нужно установить значение body html в true.

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