Verwenden Sie in .NET 4 die Klasse MailMessage
. Ich habe heute ein Problem gefunden, das ich bisher nicht lösen konnte. Bitte beachten Sie den folgenden Code:
Dies ist ein einfaches Snippet, also senden Sie eine SMTP-Nachricht. Wenn Sie die Zeilen /*1*/
, /*2*/
und /*3*/
gemeinsam ausprobieren, unterscheidet sich das Verhalten:
Wenn ein Empfänger ("To") einen deutschen Umlaut (dh "Ä", "Ö" oder "Ü") und ein Komma (zB ",") enthält, Der Empfänger sieht beschädigten Text in der E-Mail-Nachricht, die er erhält :
Wie Sie im obigen Screenshot (aus Outlook 2010) sehen können, gibt es in der Zeile "An:" eine kryptische "=? utf-8? Q? M = C3 = BCller".
Wenn Sie das Komma weglassen oder den deutschen Umlaut entfernen, wird dies behoben. Ich habe versucht, sowohl Exchange 2003 und hmailserver das gleiche Ergebnis zu erhalten.
Meine Frage ist:
Kennt jemand dieses Verhalten und hat eine Lösung?
Update 1:
Wie vom Benutzer Adam Maras vorgeschlagen, habe ich Microsoft Network Monitor aktiviert, während ich die E-Mail-Nachricht sendete.
Mir scheint, dass die MailMessage
-Klasse (oder die SmtpClient
-Klasse?) schon falsch macht:
Nach einigen Ausgrabungen stieß ich auf den Microsoft Support-Artikel 2576045: FIX: E-Mail-Client unterstützt keinen Namen in einer Lieferadresse Feld, das von der Klasse MailMessage
in .NET Framework 4 codiert wird, wenn der Name ein Nicht-ASCII-Zeichen enthält .
Es scheint, dass beim Schreiben einer Adresse, die Unicode-Zeichen enthält, die MailMessage
-Klasse etwas nicht korrekt codiert. Ich kann Ihnen sicherlich nicht sagen, was es auf den Informationen des KB-Artikels basiert, aber was immer es ist, es ist genug, um nachgeschaltete Leser an den Headern zu ersticken.
E-Mail-Header müssen us-ascii (7-bit) sein, Umlauten müssen wie in rfc2047 beschrieben codiert werden. Es gibt verschiedene Möglichkeiten, die Zeichenfolgen zu codieren und es sieht wie Outlook aus oder Ihr Mailserver wird die utf8-Codierung nicht verstehen.
Sie könnten versuchen, die Adresse selbst zu codieren, indem Sie iso-8859-1 verwenden.
edit: Ich habe gerade die Dokumentation unter Ссылка
Haben Sie versucht, MailAddress (String, String, Encoding) zu verwenden?
Wir hatten tatsächlich ähnliche Probleme. Hauptsächlich mit dem Thema aber. Ein Schritt in die richtige Richtung war MailMergeLib:
Sie könnten es versuchen, aber es hat nicht alle unsere Probleme gelöst. Jetzt sind wir zu Aspose.Email gewechselt. Es ist besser, aber immer noch nicht perfekt, wir haben immer noch ein Thema, aber jetzt nur auf Mac und iPhones, aber sie arbeiten an einem Bugfix.
Sie können es kostenlos ausprobieren. Es gibt andere E-Mail-Bibliotheken im Netz.
Ссылка
Wäre sehr interessant, wenn Sie etwas mehr herausfinden.
Tags und Links c# diacritics email mailmessage smtp