Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Problem mit Umlauten in E-Mail
zerberos
myCSharp.de - Member



Dabei seit:
Beiträge: 520

Themenstarter:

Problem mit Umlauten in E-Mail

beantworten | zitieren | melden

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?
Attachments
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1.150

beantworten | zitieren | melden

Funktioniert die Unicode Codierung?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.163
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
DJMesche
myCSharp.de - Member



Dabei seit:
Beiträge: 24
Herkunft: Dresden

beantworten | zitieren | melden


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!
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.163
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers