Странные символы в электронном письме - PullRequest
1 голос
/ 11 ноября 2011

Я написал программу обработки почты, которая в основном отправляет шаблон по входящей почте и пересылает его.Входящая почта отправляется в учетную запись Gmail, которую я загружаю с использованием POP, затем я читаю почту (как html, так и обычный текст multipart-MIME), делаю все необходимые изменения в шаблоне, затем создаю новую почту с соответствующим plain + htmlтекст и отправить его на другой адрес.

Проблема в том, что, когда почта попадает на другую сторону, некоторые из писем были искажены, со странными символами, такими как Ã и Â, волшебным образом вставлялись.Их не было в оригинальных письмах, их нет в моем шаблоне, и я не могу найти какой-либо предсказуемый образец относительно того, когда появляются эти символы.Я уверен, что это как-то связано со свойствами кодировки писем, но я проверяю, чтобы кодировка и кодировка передачи исходящей почты совпадали с входящей почтой.Так что еще мне нужно сделать?

РЕДАКТИРОВАТЬ: Вот отрывок образца входящей почты:

Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

=0A=0ASafari Special:=0A=0A=A0=0A=0ASafari in Thornybush Priv=
ate Game Reserve 9-12=0AJanuary 2012 (3nights)

После обработки это выглядит как:

Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

=0D=0A=0D=0ASafari Special:=0D=0A=0D=0A=C2=A0=0D=0A=0D=0A=
Safari in Thornybush Private Game Reserve 9-12=0D=0AJanuary=
2012 (3nights)

Обратите внимание на вставку символов =0D и =C2 (кроме нескольких символов =0A, которых не было в оригинале).

Так что же выдумаете, что здесь происходит?

ДРУГОЙ КЛЮЧ: Вот мой код, который создает альтернативное представление:

var htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");
htmlView.ContentType.CharSet = charSet;
htmlView.TransferEncoding = transferEncoding;
m.AlternateViews.Add(htmlView);

В соответствии с тем, что предложил @mjwills, возможно, *Метод 1027 * уже предполагает UTF-8, и изменение его позже на iso-8859-1 не имеет значения?

1 Ответ

2 голосов
/ 11 ноября 2011

Таким образом, каждый = 0A становится = 0D = 0A.И каждый = A0 становится = C2 = A0.

Первый выглядит так, как будто это может быть связано с возврат каретки / перевод строки .Последнее выглядит так, как будто оно может быть связано с Что такое "= C2 = A0" в MIME-кодированном тексте для печати в кавычках? .

Я предполагаю, что даже если вы указали кодировку, что-то само по себе, строка обрабатывает его как UTF8.

Вы можете попробовать использовать эту форму для CreateAlternateViewFromString, где ContentType.CharSet установлен соответствующим образом.

...