Я пытаюсь отправить электронное письмо на Java, но когда я читаю тело письма в Outlook, все мои разрывы строк исчезают. Я помещаю \ n в конце строк, но есть ли что-то особенное, что мне нужно сделать, кроме этого? Получатели всегда будут использовать Outlook.
Я нашел страницу на microsoft.com, где говорится, что в Outlook есть «функция» «Удалить разрывы строк», значит ли это, что нет другого решения, кроме снятия проверки этого параметра?
Спасибо




Попробуйте \r\c вместо \n.
Обновлено: Я думаю, что @Robert Wilkinson был прав. \r\n. Память уже не та, что была раньше.
Вам нужно использовать \r\n в качестве решения.
если тип сообщения - текст \ html, используйте <p />
Для text / html я перепробовал все, что есть <br>, <br />, / n, / r / n .... Все еще не могу получить новую строку в моем электронном письме Outlook
\ t \ n у меня работает в Outlook2010. @Noosphere кажется, что у вас неправильная косая черта.
\n в значительной степени работает для нас, но Outlook иногда берет на себя удаление разрывов строк, как вы говорите.
Вам необходимо отправлять электронные письма в формате HTML. С <br /> в электронном письме у вас всегда будут разрывы строк.
Microsoft Outlook 2002 и более поздние версии удаляют «лишние разрывы строк» из текстовых сообщений по умолчанию (kb308319). То есть Outlook, кажется, просто игнорирует последовательности перевода строки и / или возврата каретки в текстовых сообщениях, выполняя все строки вместе.
Это может вызвать проблемы, если вы пытаетесь написать код, который будет автоматически генерировать сообщение электронной почты для чтения кем-либо, использующим Outlook.
Например, предположим, что вы хотите предоставить отдельные фрагменты информации, каждую в отдельных строках для ясности, например:
Транзакция требует внимания!
Опубликовано: 30.01.2009
Сумма: $ 12 222,06
TransID: 8gk288g229g2kg89
Почтовый индекс: 91543
Получатель Outlook увидит всю информацию, разбитую вместе, как показано ниже:
Транзакция требует внимания! Дата публикации: 30.01.2009 Сумма: 12 222,06 долларов США TransID: 8gk288g229g2kg89 ZipCode: 91543
Кажется, нет простого решения. Альтернативы:
взял альтернативу 3, отказавшись от простого текста и используя формат html с <br>.
Я только сегодня борюсь с этим. Назовем поведение удаления лишних разрывов строк «продолжением». Небольшое экспериментирование обнаруживает следующее поведение:
Обратите внимание, что я пробовал все это с Outlook 2007. YMMV.
Поэтому, если возможно, завершайте все пункты маркера знаком препинания, завершающим предложение, табуляцией или даже тремя пробелами.
Действительно хороший ответ. Особенно тот факт, что 3 пробела в конечной остановке обзора - это хорошо знать (и их нельзя найти во многих местах в Интернете).
Это ответ, который должен автоматически отображаться в качестве заставки при открытии Outlook.
Почему это нигде не задокументировано? Это очень полезная информация. Спасибо за исследование!
+1 за «Строки, заканчивающиеся 3 или более пробелами, отключают продолжение». Это было эффективно для меня, чтобы Outlook отображал новую строку для коротких строк.
Ты спас мою ночь! Большое спасибо!
Весь день потратил на то, чтобы это исправить. Спасибо.
Это потрясающе - большое спасибо! \r\n не работает, но 4 пробела работают!
Попробуй это:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
С уважением, Мохаммад Расул Джавид
У меня была такая же проблема, и я нашел решение. Попробуйте это: %0D%0A, чтобы добавить разрыв строки.
РАЗРЕШЕНО В МОЕЙ ЗАЯВЛЕНИИ
В моем приложении я пытался отправить электронное письмо, тело сообщения которого было введено пользователем в текстовой области. При отправке почты Outlook автоматически удалял разрыв строки, введенный пользователем.
например, если пользователь ввел
Yadav
Махеш
Outlook отобразил это как
ЯдавМахеш
Разрешение: Я изменил символ разрыва строки «\ r \ n» на «\ par» (не забудьте нажать пробел в конце кода RTF «\ par»), и разрывы строк восстановлены.
Ура,
Махеш
Вы можете принудительно разрыв строки в Outlook при добавлении одного (или двух?) Символов табуляции (\ t) непосредственно перед разрывом строки (CRLF).
Пример:
This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.
Кажется, он работает в Outlook 2010. Пожалуйста, проверьте, работает ли это в других версиях.
См. Также Outlook автоматически очищает мои разрывы строк и портит формат электронной почты
Большое спасибо. По вашему совету, я использую "\ t" + Environment.NewLine, чтобы начинать каждую новую строку. Он работает, по крайней мере, для Outlook 2013, который я использую.
Если вы можете добавить "." (точка) в конце каждой строки, похоже, это предотвращает искажение форматирования текста Outlook.
У меня есть хорошее решение, которое я пробовал, просто добавьте Char (13) в конце строки, как в следующем примере:
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
если сообщение текстовое / обычное, \ r \ n должно работать;
если тип сообщения - текст \ html, используйте < p/>
У меня также была эта проблема с обычным / текстовым типом почты. Раньше я использовал "\ n \ n", но было два переноса строки. Затем я использовал "\ t \ n", и это сработало. Я использовал StringBuffer в java для добавления контента.
Контент был напечатан в следующей строке в почте Outlook 2010.
Я боролся со всеми вышеперечисленными решениями, и здесь ничего не помогло, потому что я использовал переменную String (простой текст из JTextPane) в сочетании с форматированием «text / html» в моей библиотеке электронной почты.
Итак, решение этой проблемы состоит в том, чтобы использовать «text / plain» вместо «text / html» и вообще не заменять возвращаемые символы:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
Поместите текст в теги <pre>, и Outlook будет правильно форматировать и отображать текст.
Я определил его в CSS inline в HTML Body, например:
CSS:
pre {
font-family: Verdana, Geneva, sans-serif;
}
Я определил семейство шрифтов, которое нужно установить.
HTML:
<td width = "70%"><pre>Entry Date/Time: 2013-09-19 17:06:25
Entered By: Chris
worklog mania
____________________________________________________________________________________________________
Entry Date/Time: 2013-09-19 17:05:42
Entered By: Chris
this is a new Worklog Entry</pre></td>
Отсюда тоже: stackoverflow.com/a/24666437/1134961 Просто заключите в теги <pre> </pre>.
Поскольку это запрос, работает только процент экранированных символов, что означает, что% 0A дает вам разрыв строки. Например,
<a href="mailto:[email protected]?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
Я использовал разрыв строки html вместо "\ n". Работало нормально.
Хитрость заключается в том, чтобы использовать функциональность encodeURIComponent() из js:
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body = " + encodeURIComponent(formattedBody);
РЕЗУЛЬТАТ:
FirstLine
SecondLine
ThirdLine
У меня также была эта проблема с обычным / текстовым типом почты. У меня работал Form Feed \f.
Для Outlook 2010 и более поздних версий используйте \ т \ п вместо \ r \ n.
Иногда вам нужно ввести \ r \ n дважды, чтобы outlook сделал перерыв.
Это добавит одну пустую строку, но все строки будут иметь разрыв.
если работа должна выполняться с форматированным текстом без кодировки html.
это может быть легко достигнуто с помощью следующего сценария создает элемент div на лету и использования элемента <pre></pre> html для сохранения форматирования.
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
Добавление «\ t \ r \ n» (\ t для TAB) вместо «\ r \ n» сработало для меня в Outlook 2010. Примечание: добавление 3 пробелов в конце каждой строки также делает то же самое, но похоже на хитрость программирования!
\ г \ п не будет работать, пока вы не установите тип тела как текст.
message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);
Не уверен, было ли это упомянуто выше, но в Outlook есть параметр флажка «Удалять лишние разрывы строк в текстовых сообщениях», который установлен по умолчанию. Он расположен в другом месте для разных версий Outlook, но для 2010 перейдите на вкладку «Файл». Выберите «Параметры => Почта». Прокрутите вниз до «Формат сообщения». Снимите флажок.
Я столкнулся с той же проблемой, и вот код, который ее решил:
\t\n - for new line in Email service JavaMailSender
String mailMessage = JSONObject.toJSONString("Your message").replace(",", "\t\n").trim();
Хотя это может помочь, простое завершение строки символом \ r \ n не гарантирует, что Outlook сохранит разрыв строки.