8

MailMessage.NET 4 のクラスを使用して、今日、これまで解決できなかった問題を発見しました。次のコードを参照してください。

using (var message = new MailMessage())
{
    message.From = new MailAddress(@"uwe.keim@gmail.com", "Uwe Keim");
    message.Bcc.Add(new MailAddress(@"uk@zeta-software.de", "Uwe Keim"));

    // This fails (see screenshot).
    /*1*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Müller, Fred"));

    // This succeeds.
    /*2*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Fred Müller"));

    // This also succeeds.
    /*3*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Muller, Fred"));

    message.Subject = "Test";
    message.Body = "Some text body.";

    new SmtpClient().Send(message);
}

これは単純なスニペットなので、SMTP メッセージを送信します。/*1*/行、/*2*/および を相互に試すと/*3*/、動作が異なります。

受信者 ("To") の名前にドイツ語のウムラウト ("Ä"、"Ö"、または "Ü")コンマ (",") が含まれている場合、受信者は受信した電子メール メッセージのテキストが破損していることがわかります

ここに画像の説明を入力

上記のスクリーンショット (Outlook 2010 から取得) でわかるように、"To:" 行に不可解な "=?utf-8?Q?M=C3=BCller" があります。

コンマを省略するか、ドイツ語のウムラウトを削除すると、これが修正されます。Exchange 2003 と hmailserver の両方を試しましたが、同じ結果が得られました。

私の質問は:

誰かがこの動作を認識しており、解決策を持っていますか?

更新 1:

ユーザーAdam Marasが提案したように、電子メール メッセージの送信中に Microsoft Network Monitor を起動しました。

私には、MailMessageクラス(またはSmtpClientクラス?)がすでに間違っているようです:

ここに画像の説明を入力

4

3 に答える 3

4

そのため、掘り下げた後、マイクロソフトのサポート記事 2576045 に出くわしました: FIX: メール クライアントは、名前に非 ASCII 文字が含まれている場合、.NET Framework 4のクラスによってエンコードされた配信アドレス フィールドの名前をサポートしませんMailMessage

Unicode 文字を含むアドレスを書き出すときに、MailMessageクラスが何かを正しくエンコードしていないようです。KB 記事の情報に基づいてそれが何であるかは確かにわかりませんが、それが何であれ、ダウンストリームの読者をヘッダーで窒息させるには十分です.

于 2011-12-27T09:36:15.017 に答える
2

電子メール ヘッダーは、us-ascii (7 ビット) である必要があり、ウムラウトを使用するには、rfc2047 で説明されているエンコードが必要です。文字列をエンコードするにはさまざまな方法があり、outlook またはメールサーバーが utf8 エンコードを理解できないようです。

iso-8859-1 を使用して、自分でアドレスを MIME エンコードすることもできます。

編集: http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspxでドキュメントを確認しました

MailAddress(String, String, Encoding) を試してみましたか?

于 2011-12-27T09:31:23.247 に答える
0

実際に同様の問題がありました。ただし、主に件名で。正しい方向への 1 つのステップは、MailMergeLib でした。

http://www.codeproject.com/KB/IP/MailMergeLib.aspx

試してみることはできますが、すべての問題が解決するわけではありません。ここで、Aspose.Email に切り替えました。改善されましたが、まだ完全ではありません。まだ問題がありましたが、現在は Mac と iPhone のみで、バグ修正に取り組んでいます。

http://www.aspose.com/categories/.net-components/aspose.email-for-.net/default.aspx

無料でお試しいただけます。ネット上には他の電子メール ライブラリがあります。
http://www.chilkatsoft.com/products.asp

もっと何かを見つけたら、とても興味があります。

于 2011-12-27T09:46:23.150 に答える