Laden...

Problem mit Umlauten in E-Mail

Erstellt von zerberos vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.238 Views
Z
zerberos Themenstarter:in
520 Beiträge seit 2007
vor 12 Jahren
Problem mit Umlauten in E-Mail

Hallo,

ich versuche eine E-Mail Mit Umlauten zu erstellen. Leider stellt Outlok die Umalute nicht richtig da.

Mein Code:


string einheit = "Qualität";
MailMessage Message = new MailMessage();
Message.IsBodyHtml = true;
       
Message.BodyEncoding = System.Text.Encoding.UTF8;
Message.Subject = "test";
Message.Body += "Einheit: " + Server.HtmlEncode(einheit) + "%0A";

StringBuilder sb = new StringBuilder();

        sb.Append("<script language=JavaScript> ");
        sb.Append("document.location.href =\"mailto:test1@test.de?cc=test2@test.de;test3@test.de&subject=Registrierung&body=" + Message.Body + "\";");
        sb.Append(" </script>");

        this.ClientScript.RegisterStartupScript(this.GetType(), "mail", sb.ToString());


ein Bild von der Darstellung in Outllok habe ich angehängt. Woran kann das liegen?

Gelöschter Account
vor 12 Jahren

Funktioniert die Unicode Codierung?

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

das Encoding im Body wird nur benutzt, wenn Du die Message auch tatsächlich von .NET aus abschickst. Die Property an sich ist aber einfach nur Text und damit 16bit-Unicode.

Probier mal mit

Message.Body += "Einheit: " + Server.HtmlEncode(einheit) + "\n"; // <-- \n weil später noch URL codiert wird

und dann beim StringBuilder:

sb.Append("document.location.href =\"mailto:test1@test.de?cc=test2@test.de;test3@test.de&subject=Registrierung&body=" + HttpUtility.UrlEncode(Message.Body) + "\";");

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

D
24 Beiträge seit 2011
vor 12 Jahren

System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;
	
            //nach UTF8 (Bytes) konvertieren
            byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(Server.HtmlEncode(einheit));
	
            //in einem UTF8-String konvertieren
            string einheit = System.Text.Encoding.UTF8.GetString(utf8Bytes );
	
            Message.Body += "Einheit: " + einheit + "%0A";

?


Wer zuletzt lacht, hat den höchsten Ping!

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo DJMesche,

HtmlEncode ist der falsche Gegner -> damit bekommst Du HTML-Entitäten, die in eine URL zu packen ist fatal, wegen der &-Zeichen die dabei entstehen. Dafür gibt es ja das von mir bereits erwähnte UrlEncode.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca