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
クラス?)がすでに間違っているようです: