Прогноз autocleaning мои разрывы строк и испортил мой электронный формат



Я отправляю электронное письмо с помощью платформы dotnet. Вот шаблон, который я использую для создания сообщения:



Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For: %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%


когда сообщения получены в outlook, outlook говорит мне "дополнительные разрывы строк в этом сообщении были удалены". И сообщение отображается следующим образом:



Date of Hire: 9/28/2001
Annual Salary: 0,000
Reason for Request: New Hire

Name of Voluntary Employee: Ronald Weasley Total Coverage Applied For: 0,000 Guaranteed Coverage Portion: 0,000.00 Amount Subject to Medical Evident: 0,000


обратите внимание, как Outlook неправильно удаляет необходимые разрывы строк после имени, EECoverageAmount и т. д...



это важно для получателей электронной почты, чтобы получить правильно форматированная электронная почта, и я должен предположить, что некоторые из них используют outlook 2003. Я также не могу предположить, что они будут знать достаточно, чтобы отключить функцию autoclean, чтобы получить сообщение для правильного форматирования.



Я просмотрел эти сообщения в других почтовых клиентах, и они отображаются правильно



дополнительная информация:




  • я использую UTF-8 BodyEncoding (msg.BodyEncoding = Система.Текст.Кодирование.В utf8)

  • msg.Тело считывается из кодированного UTF-8 текстовый файл, и каждая строка заканчивается crlf.


вопрос:
Как изменить формат сообщения, чтобы избежать этой проблемы?

683   10  

10 ответов:

начните каждую строку с 2 пробелами и outlook будет "обманут" в сохранении форматирования.

Так изменить

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

до

  Date of Hire: %HireDate%
  Annual Salary: %AnnualIncome%
  Reason for Request: %ReasonForRequest%

  Name of Voluntary Employee: %FirstName% %LastName%
  Total Coverage Applied For:  %EECoverageAmount%
  Guaranteed Coverage Portion: %GICoveragePortion%
  Amount Subject to Medical Evident: %GIOverage%
^^ <--- Two extra spaces at the start of every line

здесь статьи я нашел при исследовании этой проблемы, которая идет в немного большую глубину, чем мой ответ.

вы также можете вставить символ табуляции в конец линии (непосредственно перед CR LF). Этот дополнительный пробел будет в конце строки и, следовательно, не виден пользователю. Вы можете предпочесть это, чтобы вставить пробелы слева. Обратите внимание, что одного пространства недостаточно (хотя, возможно, несколько пространств помогут, я не знаю.)

этот ответ о том, как" отключить " функцию от клиента Outlook.

  • перейти к инструментам - > "параметры ..."
  • на вкладке" Настройки "нажмите на кнопку" Параметры электронной почты ..."
  • снимите флажок "удалять дополнительные переносы строк в текстовых сообщениях."
  • жмем ОК

FYI:я использую Outlook 2007

Мне всегда лучше удавалось форматировать электронные письма как html. У вас все еще может быть проблема с конечным пользователем, чтобы установить клиент, чтобы разрешить формат html, но они, как правило, более знакомы с этим, так как так много электронных писем приходят в формате html. У вас также есть немного больше работы на вашем конце, добавляя теги html, но конечный результат гораздо более управляемый.

@ephemient также предлагает: отправить как HTML и открытый текст. Хороших клиентов будет показывать последний, Outlook будет показывать во-первых, все довольны (кроме программиста, который должен делать больше работы).

добавление " \t\r\n "(\t для вкладки) вместо"\r \ n " работало для меня в Outlook 2010.

расширения Даг Л ответ, так как я думаю, что HTML-сообщения еще более распространены и приняты сейчас, чем в 2008 году, когда был опубликован этот ответ. Вот небольшой фрагмент c#, чтобы помочь преобразовать тело и отправить сообщение в формате HTML:

body = string.Format("<font face='calibri,arial,sans-serif'>{0}<font/>", body.Replace("\r\n", "<br>"));

using (var smtpClient = new SmtpClient() { Host = smtpHost })
using (var msg = new MailMessage(from, emailDistribution, subject, body) { IsBodyHtml = true })
     smtpClient.Send(msg);

Я вижу ту же проблему при создании простого текста электронной почты, а затем читать его с Outlook 2003 SP3. Похоже, вы можете избежать процесса удаления с помощью него, сохраняя длину строки менее 40 символов. Не всегда может быть практичным.

поместите текст в <pre> теги и outlook будут форматировать и отображать текст правильно.

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

мой текст включает '\r\n', но Outlook 2010 не отображает разрыв строки. Создание маркеров строк, разделенных' \r\n ' и маркеров конвертов тегами абзацев HTML. Мой формат электронной почты-HTML. Я создаю HTML тело для моей электронной почты в коде ниже.

string[] tokens = Regex.Split(objTickt.Description, "\r\n");
  if (tokens.Length > 0)
  {
     foreach (string line in tokens)
     {
         //htmlTW.WriteEncodedText(objTickt.Description.Replace("\r\n", "\n\n"));
         htmlTW.RenderBeginTag(HtmlTextWriterTag.P);
         htmlTW.WriteEncodedText(line);
         htmlTW.RenderEndTag();
     }
  }

измените окончание линии с crlf на cr или lf.

Я подозреваю, что в верхней части электронной почты используется только cr (или lf), и Outlook ожидает, что остальная часть электронной почты будет следовать тому же формату.

Comments

    Ничего не найдено.