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

Как форматировать строку в письме, чтобы Outlook распечатывал разрывы строк?

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

Я нашел страницу на microsoft.com, в которой говорится, что в Outlook есть функция "Удалить разрывы строк", так ли это означает, что нет решения обойти это, кроме отмены проверки этого параметра?

Спасибо

4b9b3361

Ответ 1

Вам нужно использовать \r\n в качестве решения.

Ответ 2

Я только что сражался с этим сегодня. Позвольте называть поведение удаления лишних разрывов строк "продолжение". Немного экспериментов находит следующее поведение:

  • Каждое сообщение начинается с продолжения.
  • Линии длиной менее 40 символов не вызывают продолжения, но если продолжение продолжается, они будут удалены.
  • Линии 40 символов или более длинное продолжение продолжения. Он остается включенным до тех пор, пока не произойдет событие, чтобы отключить его.
  • Строки, которые заканчиваются периодом, вопросительным знаком, восклицательным знаком или двоеточием, завершают работу. (Outlook предполагает, что это конец предложения?)
  • Линии, которые вызывают продолжение, начинаются с разрыва строки, но вернут продолжение, если они длиннее 40 символов.
  • Строки, которые начинаются или заканчиваются с помощью вкладки, продолжают продолжение.
  • Линии, начинающиеся с 2 или более пробелов, продолжают продолжение.
  • Линии, которые заканчиваются 3 или более пробелами, отключают продолжение.

Обратите внимание, что я пробовал все это с помощью Outlook 2007. YMMV.
Поэтому, если возможно, завершите все элементы маркера с помощью знака препинания, табуляции или даже трех пробелов.

Ответ 3

Вы можете форсировать перерыв строки в 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, автоматически очищающий мой разрыв строки и зависающий мой формат электронной почты

Ответ 4

Microsoft Outlook 2002 и выше удаляет "лишние строки" из текстовых сообщений по умолчанию (kb308319). То есть Outlook, по-видимому, просто игнорирует последовательности строк и/или возврата каретки в текстовых сообщениях, используя все строки вместе.

Это может вызвать проблемы, если вы пытаетесь написать код, который автоматически генерирует сообщение электронной почты, которое будет прочитано кем-то с помощью Outlook.

Например, предположим, что вы хотите отдельно предоставить отдельные фрагменты информации на отдельных строках, например:

Транзакция требует внимания!
Опубликовано: 30.01.2009
Сумма: 12 222,06 $
TransID: 8gk288g229g2kg89
PostalCode: 91543

Получатель Outlook увидит всю информацию, разбитую вместе, следующим образом:

Транзакция требует внимания! Опубликовано: 30.01.2009 Количество: $12,222,06 TransID: 8gk288g229g2kg89 ZipCode: 91543

Не похоже, что это простое решение. Альтернативы:

  • Вы можете предоставить два набора разрывов строк между каждой строкой. Это не позволяет Outlook объединять строки в одну строку, но затем отображает дополнительную пустую строку между каждой строкой (создавая противоположную проблему). Под "поставкой двух наборов разрывов строк" ​​я имею в виду, что вы должны использовать "\ r\n\r\n" или "\ r\r" или "\n\n", но не "\ r\n" или "\n\г".
  • Вы можете указать два пробела в начале каждой строки в теле сообщения электронной почты. Это позволяет избежать введения дополнительной пустой линии между каждой строкой. Но это лучше всего работает, если каждая строка в вашем сообщении довольно короткая, потому что пользователь может просматривать текст в очень узком окне Outlook, которое завершает конец каждой строки в первую позицию на следующей строке, где она не будет выстройте линию с двумя линиями с отступом. Эта стратегия была использована для некоторых newsletters.
  • Вы можете отказаться от использования текстового формата и использовать html-формат.

Ответ 5

У меня была такая же проблема, и я нашел решение. Попробуйте: %0D%0A добавить разрыв строки.

Ответ 6

Вам нужно отправить HTML-письма. При <br /> в письме вы всегда будете иметь разрывы строк.

Ответ 7

Я боролся со всеми вышеперечисленными решениями и ничего не помогал здесь, потому что я использовал переменную String (обычный текст из JTextPane) в сочетании с форматированием text/html в моей электронной почте.

Итак, решение этой проблемы заключается в использовании "text/plain" вместо "text/html" и вообще не нужно заменять возвращаемые символы:

MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");

Ответ 8

Поместите текст в <pre>. Тэги и внешний вид будут отформатировать и отобразить текст правильно.

Я определил его в 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>

Ответ 9

Поскольку это запрос, работает только процент экранированных символов, означает, что% 0A дает вам разрыв строки. Например,

&lt;a href=&quot;mailto:[email protected]?Subject=TEST&amp;amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks&quot;&gt;email to me&lt;/a&gt;

Ответ 10

Я использовал перерыв строки html вместо "\n". Он работал нормально.

Ответ 11

Хитрость заключается в использовании функциональности encodeURIComponent() от js:

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);

РЕЗУЛЬТАТ:

FirstLine
SecondLine
ThirdLine

Ответ 12

Добавление "\ t\r\n" (\ t для TAB) вместо "\ r\n" работало для меня в Outlook 2010. Примечание: добавление 3 пробелов в конце каждой строки также делает то же самое, но это выглядит как взлом программирования!

Ответ 13

Попробуйте \r\c вместо \n.

EDIT: Я думаю, что у Роберта Уилкинсона это было правильно. \r\n. Память просто не такая, какая она была.

Ответ 14

\n в значительной степени работает для нас, но Outlook иногда берет на себя обязательство удалить разрывы строк, как вы говорите.

Ответ 15

Попробуйте следующее:

message.setContent(new String(body.getBytes(), "iso-8859-1"),
                    "text/html; charset=\"iso-8859-1\"");

С уважением, Мохаммад Расул Джейвед

Ответ 16

ПОСТАНОВИЛИ В МОЕМ ПРИМЕНЕНИИ

В моем приложении я пытался отправить электронное письмо, тело сообщения которого было введено пользователем в текстовой области. Когда почта была отправлена, Outlook автоматически удаляет разрыв строки, введенный пользователем.

например, если пользователь вступил
Ядав
Махеш

Outlook отображал его как
YadavMahesh

Разрешение: я изменил символ разрыва строки "\ r\n" на "\ par" (помните, чтобы пробежать в конце RTF-кода "\ par" ), и разрывы строк сохраняются.

Cheers,
Махеш

Ответ 17

Если вы можете добавить в '.' (точка) в конце каждой строки, это, по-видимому, не позволяет Outlook разрушать форматирование текста.

Ответ 18

У меня есть хорошее решение, которое я попробовал, просто добавьте Char (13) в конец строки, как в следующем примере:

Dim S As String
 S = "Some Text" & Chr(13)
 S = S + "Some Text" & Chr(13)

Ответ 19

если сообщение является текстовым/обычным с использованием, \r\n должно работать; если тип сообщения - text\html, используйте < p/>

Ответ 21

У меня также была проблема с обычным/текстовым типом. Раньше я использовал "\n\n", но было два разрыва строки. Затем я использовал "\ t\n", и он сработал. Я использовал StringBuffer в java для добавления содержимого.
Содержимое было напечатано в следующей строке в почте Outlook 2010.

Ответ 22

У меня также была эта проблема с простой/текстовой почтой типа. Form Feed \f работал у меня.

Ответ 23

Для Outlook 2010 и более поздних версий используйте \t\n, а не используя\r\n.

Ответ 24

Иногда вам нужно дважды ввести \r\n, чтобы заставить Outlook сделать перерыв.

Это добавит одну пустую строку, но все строки будут иметь разрыв.

Ответ 25

если работа должна быть выполнена с форматированным текстом без кодировки html. это может быть легко достигнуто в следующем сценарии: создает элемент div на лету и использует <pre></pre> элемент html для форматирования.

var email_body = htmlEncode($("#Body").val());

 function htmlEncode(value) {
    return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}

Ответ 26

\r\n не будет работать, пока вы не установите тип тела в виде текста.

message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);