Подтвердить что ты не робот

Разрывы строк игнорируются при отправке почты в виде обычного текста

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

4b9b3361

Ответ 1

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

Ответ 2

У нас была та же проблема, но если вы определяете свое сообщение сразу в 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");

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Более сложная причина может случиться, что мне просто пришлось иметь дело:

  • Ваш почтовый сервер управляет исходящими сообщениями и добавляет html-версию в ваше сообщение только с текстом

Ответ 7

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

Ответ 8

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

$emailMessage.Body = "First Line" + "`r`n" + "Second Line"