Как отформатировать строку в электронном письме, чтобы Outlook печатал разрывы строк?
-
02-07-2019 - |
Вопрос
Я пытаюсь отправить электронное письмо на Java, но когда я читаю тело письма в Outlook, все разрывы строк исчезают.Я ставлю в конце строк, но нужно ли мне делать что-то особенное, кроме этого?Получатели всегда будут использовать Outlook.
Я нашел страницу на microsoft.com, на которой говорится, что в Outlook есть «функция» «Удалить разрывы строк». Означает ли это, что нет другого решения, кроме как снять флажок с этого параметра?
Спасибо
Решение
Вам нужно использовать \r\n
как решение.
Другие советы
Я как раз боролся с этим сегодня.Давайте назовем поведение удаления дополнительных разрывов линии «продолжение». Небольшой эксперимент находит следующее поведение:
- Каждое сообщение начинается с отключения продолжения.
- Строки длиной менее 40 символов не вызывают продолжения, но если продолжение включено, разрывы строк будут удалены.
- Строки длиной 40 символов и более включают продолжение.Он остается включенным до тех пор, пока не произойдет событие, выключающее его.
- Строки, заканчивающиеся точкой, вопросительным знаком, восклицательным знаком или двоеточием, отключают продолжение.(Outlook предполагает, что это конец предложения?)
- Строки, для которых отключено продолжение, начинаются с разрыва строки, но продолжение снова включается, если их длина превышает 40 символов.
- Строки, которые начинаются или заканчиваются табуляцией, отключают продолжение.
- Строки, начинающиеся с двух и более пробелов, отключают продолжение.
- Строки, заканчивающиеся тремя и более пробелами, отключают продолжение.
Обратите внимание, что я пробовал все это с Outlook 2007.ЮММВ.
Поэтому, если возможно, заканчивайте все пункты маркированного списка знаком препинания, завершающим предложение, табуляцией или даже тремя пробелами.
Вы можете вызвать разрыв строки в Outlook, прикрепив один (или два?) символа табуляции ( ) непосредственно перед разрывом строки (CRLF).
Пример:
This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.
Кажется, это работает в Outlook 2010.Пожалуйста, проверьте, работает ли это на других версиях.
Смотрите также Outlook автоматически очищает разрывы строк и портит формат электронной почты
Microsoft Outlook 2002 и более поздние версии по умолчанию удаляют «лишние разрывы строк» из текстовых сообщений. (кб308319).То есть Outlook, похоже, просто игнорирует последовательности перевода строки и/или возврата каретки в текстовых сообщениях, объединяя все строки вместе.
Это может вызвать проблемы, если вы пытаетесь написать код, который будет автоматически генерировать сообщение электронной почты, которое будет прочитано кем-то, использующим Outlook.
Например, предположим, что вы хотите для ясности предоставить отдельные фрагменты информации в отдельных строках, например:
Сделка требует внимания!
Дата публикации:30.01.2009
Количество:$12 222,06
ТрансИД:8гк288г229г2кг89
Почтовый индекс:91543
Получатель Outlook увидит всю информацию в одном виде, а именно:
Сделка требует внимания!Дата публикации:30.01.2009 Сумма:$12 222,06 Трансидентификатор:8gk288g229g2kg89 Почтовый индекс:91543
Кажется, простого решения не существует.Альтернативы:
- Вы можете поставить два наборы разрывов строк между каждой строкой.Это не позволяет Outlook объединить строки в одну, но затем между каждой строкой отображается дополнительная пустая строка (создавая противоположную проблему).Под «предоставлением двух наборов разрывов строк» я имею в виду, что вы должны использовать « » или « » или « », но не « » или « ». \р".
- Вы можете указать два пробела в начале каждой строки тела сообщения электронной почты.Это позволяет избежать введения дополнительной пустой строки между каждой строкой.Но это работает лучше всего, если каждая строка в вашем сообщении достаточно короткая, потому что пользователь может просматривать текст в очень узком окне Outlook, которое переносит конец каждой строки в первую позицию следующей строки, где этого не будет. совместите строки с отступом в два пробела.Эта стратегия использовалась для некоторых информационные бюллетени.
- Вы можете отказаться от использования обычного текстового формата и использовать формат html.
У меня была такая же проблема, и я нашел решение.Попробуй это: %0D%0A
чтобы добавить разрыв строки.
Я использовал разрыв строки html вместо « ».Все работало нормально.
Добавление « » ( для TAB) вместо « » помогло мне в Outlook 2010.Примечание :добавление трех пробелов в конце каждой строки также делает то же самое, но это похоже на программный хак!
Вам необходимо отправлять электронные письма в формате HTML.С <br />
в электронном письме, у вас всегда будут разрывы строк.
Я боролся со всеми вышеперечисленными решениями, и здесь ничего не помогло, потому что я использовал переменную String (обычный текст из JTextPane) в сочетании с форматированием «text/html» в моей библиотеке электронной почты.
Итак, решение этой проблемы — использовать «text/plain» вместо «text/html» и вообще не заменять возвращаемые символы:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
Вставьте текст <pre>
Теги и Outlook будут правильно форматировать и отображать текст.
я определил это в CSS, встроенном в тело HTML, например:
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>
Поскольку это запрос, работают только экранированные символы в процентах, что означает, что %0A дает вам разрыв строки.Например,
<a href="mailto:someone@gmail.com?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
Хитрость заключается в том, чтобы использовать encodeURIComponent()
функциональность из js:
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);
РЕЗУЛЬТАТ:
FirstLine
SecondLine
ThirdLine
Для Outlook 2010 и более поздних версий используйте \т\п вместо использования .
не будет работать, пока вы не установите тип тела как текст.
message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);
РЕШЕНО В МОЕМ ЗАЯВЛЕНИИ
В моем приложении я пытался отправить электронное письмо, тело сообщения которого было введено пользователем в текстовую область.При отправке почты Outlook автоматически удалял разрыв строки, введенный пользователем.
например, если пользователь ввел
Ядав
Махеш
Outlook отобразил это как
Ядав Махеш
Разрешение: Я изменил символ разрыва строки « » на «\par» (не забудьте нажать пробел в конце кода RTF «\par»), и разрывы строк восстановлены.
Ваше здоровье,
Махеш
Если вы можете добавить в '.' (DOT) символ В конце каждой строки это, по -видимому, предотвращает форматирование текста, разрушающего Outlook.
Попробуй это:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
С уважением, Мохаммад Расул Джейвед
Пытаться \r\c
вместо \n
.
РЕДАКТИРОВАТЬ: Я думаю, что @Robert Wilkinson был прав. \r\n
.Память уже не та, что раньше.
А \n
в основном работает для нас, но Outlook иногда берет на себя задачу удалить разрывы строк, как вы говорите.
У меня есть хорошее решение, которое я попробовал: просто добавьте Char(13) в конец строки, как показано в следующем примере:
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
если сообщение является текстовым/обычным,
должно работать;если тип сообщения — text\html, используйте < p/>
Этот должно быть полезно для вас.попробуйте «%0A» вместо « ».Настоящий источник здесь.
Вам нужно добавить «%0A» везде, где вам понадобится новая строка в вашем коде.В твоем случае
abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh was unable
to process it : " + s+ "%0A" +e.getMessage().toString());
У меня также была проблема с типом обычной/текстовой почты.Раньше я использовал «
», но было два разрыва строки.Затем я использовал «
», и это сработало.я использовал StringBuffer
в Java для добавления контента.
Содержимое было напечатано в следующей строке в почте Outlook 2010.
У меня также была эта проблема с обычным/текстовым типом почты. Подача формы \f
работал у меня.
Иногда вам нужно дважды ввести , чтобы заставить Outlook сделать перерыв.
Это добавит одну пустую строку, но все строки будут иметь разрыв.
если работу необходимо выполнить с форматированным текстом без кодировки HTML.этого можно легко достичь с помощью следующего сценария, который создает элемент div на лету и использование <pre></pre>
html для продолжения форматирования.
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
Не уверен, упоминалось ли об этом выше, но в Outlook есть флажок «Удалить дополнительные разрывы строк в текстовых сообщениях», который установлен по умолчанию.В разных версиях Outlook он расположен в разных местах, но в версии 2010 перейдите на вкладку «Файл».Выберите «Опции => Почта». Прокрутите вниз до «Формат сообщения». Снимите флажок.