У меня есть текст типа "Привет,\r\n это тест \r\n Спасибо." Я отправляю почту с помощью класса MailMessage. Я установил для свойства IsBodyHtml значение false. Проблема в том, что я получаю письма без разрывов строк. Можете ли вы сообщить мне, что мне не хватает?
Разрывы строк игнорируются при отправке почты в виде обычного текста
Ответ 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"