Ответ 1
Вам нужно использовать \r\n
в качестве решения.
Я пытаюсь отправить электронное письмо на Java, но когда я прочитал текст письма в Outlook, он избавился от всех моих строк. Я помещаю \n на концах строк, но есть ли что-то особенное, что мне нужно делать иначе? Приемники всегда будут использовать Outlook.
Я нашел страницу на microsoft.com, в которой говорится, что в Outlook есть функция "Удалить разрывы строк", так ли это означает, что нет решения обойти это, кроме отмены проверки этого параметра?
Спасибо
Вам нужно использовать \r\n
в качестве решения.
Я только что сражался с этим сегодня. Позвольте называть поведение удаления лишних разрывов строк "продолжение". Немного экспериментов находит следующее поведение:
Обратите внимание, что я пробовал все это с помощью Outlook 2007. YMMV.
Поэтому, если возможно, завершите все элементы маркера с помощью знака препинания, табуляции или даже трех пробелов.
Вы можете форсировать перерыв строки в 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, автоматически очищающий мой разрыв строки и зависающий мой формат электронной почты
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
Не похоже, что это простое решение. Альтернативы:
У меня была такая же проблема, и я нашел решение. Попробуйте: %0D%0A
добавить разрыв строки.
Вам нужно отправить HTML-письма. При <br />
в письме вы всегда будете иметь разрывы строк.
Я боролся со всеми вышеперечисленными решениями и ничего не помогал здесь, потому что я использовал переменную String (обычный текст из JTextPane) в сочетании с форматированием text/html в моей электронной почте.
Итак, решение этой проблемы заключается в использовании "text/plain" вместо "text/html" и вообще не нужно заменять возвращаемые символы:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
Поместите текст в <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>
Поскольку это запрос, работает только процент экранированных символов, означает, что% 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
Добавление "\ t\r\n" (\ t для TAB) вместо "\ r\n" работало для меня в Outlook 2010. Примечание: добавление 3 пробелов в конце каждой строки также делает то же самое, но это выглядит как взлом программирования!
Попробуйте \r\c
вместо \n
.
EDIT: Я думаю, что у Роберта Уилкинсона это было правильно. \r\n
. Память просто не такая, какая она была.
\n
в значительной степени работает для нас, но Outlook иногда берет на себя обязательство удалить разрывы строк, как вы говорите.
Попробуйте следующее:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
С уважением, Мохаммад Расул Джейвед
ПОСТАНОВИЛИ В МОЕМ ПРИМЕНЕНИИ
В моем приложении я пытался отправить электронное письмо, тело сообщения которого было введено пользователем в текстовой области. Когда почта была отправлена, Outlook автоматически удаляет разрыв строки, введенный пользователем.
например, если пользователь вступил
Ядав
Махеш
Outlook отображал его как
YadavMahesh
Разрешение: я изменил символ разрыва строки "\ r\n" на "\ par" (помните, чтобы пробежать в конце RTF-кода "\ par" ), и разрывы строк сохраняются.
Cheers,
Махеш
Если вы можете добавить в '.' (точка) в конце каждой строки, это, по-видимому, не позволяет Outlook разрушать форматирование текста.
У меня есть хорошее решение, которое я попробовал, просто добавьте Char (13) в конец строки, как в следующем примере:
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
если сообщение является текстовым/обычным с использованием, \r\n должно работать;
если тип сообщения - text\html, используйте < p/>
Это должно быть полезно для вас. попробуйте "% 0A" вместо "\n" . Настоящий источник здесь.
Вам нужно добавить "% 0A", где вам понадобится новая строка в вашем коде. В вашем случае
abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh was unable
to process it : " + s+ "%0A" +e.getMessage().toString());
У меня также была проблема с обычным/текстовым типом. Раньше я использовал "\n\n", но было два разрыва строки. Затем я использовал "\ t\n", и он сработал. Я использовал StringBuffer
в java для добавления содержимого.
Содержимое было напечатано в следующей строке в почте Outlook 2010.
У меня также была эта проблема с простой/текстовой почтой типа. Form Feed \f
работал у меня.
Для Outlook 2010 и более поздних версий используйте \t\n, а не используя\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>";
}
\r\n не будет работать, пока вы не установите тип тела в виде текста.
message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);