メール処理プログラムを作成しました。これは基本的に受信メールのテンプレートを叩いて転送します。受信メールはPOPを使用してダウンロードしたGmailアカウントに行き、メール(HTMLと平文のマルチパート-MIMEの両方)を読んで、テンプレートに必要な変更を行い、適切なプレーン+ htmlで新しいメールを作成しますテキストを送信して別のアドレスに送信します。メールに奇妙な文字があります
メールが相手側に届くと、Ã
とÂ
のような奇妙な文字が魔法のように入り込んでメールの一部が壊れてしまいます。彼らは元のメールにはなく、テンプレートにはありません。これらの文字がいつ登場するかについては、予測可能なパターンを見つけることができません。私はそれがメールのエンコーディングプロパティと関係があると確信していますが、私は、送信メールの文字セットと転送エンコーディングの両方を受信メールと同じに設定するようにしています。それでは私は何をする必要がありますか?
EDIT:ここでは受信メールの切り取らサンプルです:
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
文字の挿入(:処理後
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)
が、これはとして出てきますいくつかから元のものではなかった=0A
の)。
ここで何が起こっていると思いますか?
ANOTHER CLUE:ここで別のビューを作成私のコードです:提案@mjwills何の線に沿って
var htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");
htmlView.ContentType.CharSet = charSet;
htmlView.TransferEncoding = transferEncoding;
m.AlternateViews.Add(htmlView);
は、おそらくCreateAlternativeViewFromString()
方法は、既にUTF-8を想定して、後でISOにそれを変更します-8859-1は違いはありませんか?
これはエンコードの問題のようです。送信したメッセージの例とその結果として生じる文字化けしたメッセージを投稿してください。プロセスの各段階でメールのバイナリ形式を調べる必要があります。 – Mankarse
@Mankarse - 私の編集を参照 –