SmtpClient
件名に ASCII 範囲外の文字が含まれている可能性がある電子メールを送信するために.NET を使用しています。RFC 2047は、電子メール テキストに特殊文字が含まれている場合のエンコード方法を定義しています。電子メール ヘッダーの件名の例を次に示します。
Subject: Votre enregistrement numéro 123
ISO-8859-1 にエンコードすると、次のようになります。
Subject: =?iso-8859-1?Q?Votre=20enregistrement=20num=E9ro=20123?=
?
, =
(およびその他) と空白を含むすべての特殊文字は、=xx
エスケープ シーケンスを使用してエンコードされます。
ただし、何SmtpClient
が生成されるかを見ると、空白がエスケープされていないことがわかります。これは、メール クライアントが次のヘッダーを受信することを意味します。
Subject: =?iso-8859-1?Q?Votre enregistrement num=E9ro 123?=
これは、エンコーディングが RFC 2047 に関して壊れていることを意味します。一部の電子メール クライアントは、この不適切なエンコーディングに完全に満足しています (実際、それらのほとんどは、Outlook と gmail を含みます) が、1 つ (wanadoo.fr)ヘッダーを生の形式で表示します。これは、ユーザーが見るべきものではありません:-(
この問題に対する既知の回避策はありますか?
注:の .NET 4.0 実装SmtpClient
は、サブジェクトを期待どおりにエンコードし、正しい次の出力を生成します。
Subject: =?Windows-1252?Q?Votre_enregistrement_num=E9ro_123?=