Brombeermilchtrinker: Mail Codierung - Problem noch immer nicht gelöst

Beitrag lesen

Hi dedlfix,

Nein, so schnell geht das nicht. Soweit ich weiß, lungert ein Thread üblicherweise noch mindestens drei Tage nach der letzten Aktivität hier rum, bevor ihn ein Automatismus wegen Inaktivität ins Archiv verschiebt.

Stimmt, er ist noch da. Na dann mal los:

Auf Grund unzähliger Beiträge aus dem Archiv, unter anderem auch _viele_ von Dir, habe ich folgende Grundvoraussetzungen:

1.) _Alle_ meine html-Ressourcen besitzen eine "<meta http-equiv="content-type" content="text/html; charset=utf-8" />" Angabe.
2.) In _all_ meinen Formularen steht bei der Formulardefinition eine "accept-charset="utf-8""Angabe.
3.) _Alle_ meine php-Ressourcen besitzen eine "header("Content-type:text/html;charset=utf-8");" Angabe.
4.) _Alle_ meine css-Ressourcen beginnen mit einer "@charset "utf-8";" Angabe.
5.) Wenn ich Daten (mit $kommando=$db->prepare($sql), $kommando->bind_param und $kommando->execute)an meine mysql datenbank schicke, dann kommt davor _immer_ eine "$db->set_charset("utf8");" Angabe.
6.) _Alle_ von mir geschriebenen Ressourcen, egal, ob php, css oder html werden mit dem Notepad++ Editor geschrieben und unter/mit dem Format "UTF-8 ohne BOM" gespeichert.
7.) Und letztendlich stehen in meiner .htaccess-Datei auch noch die Angaben "AddType text/html;charset=UTF-8 .htm" und "AddType text/css;charset=UTF-8 .css"

Ich gehe davon aus, das ist alles, was ich tun kann sowie soll/muß, damit wirklich _überall_ die Verwendung von utf-8 gewährleistet wird. Ist das richtig so?

Nun zu den gegebenen Tips und Links bezüglich meines Problems. Ich habe mich jetzt nochmals damit beschäftigt, hier ist mein derzeitiger Ergebnisstand:

Das Ziel ist der Versand einer Mail an Jürgen Mustermann-Weiß mit der Mailadresse "juergen.mustermann-weiss@example.org" vom Absender Jörg Mustermann-Spär mit der Mailadresse "joerg.mustermann-spaer@example.com". Der Betreff soll "Bestellbestätigung Ihrer 3 Wunschkühe" lauten und der Inhalt der Mail soll folgendermaßen aussehen:

Sehr geehrter Herr Mustermann-Weiß,

bitte bestätigen Sie uns noch Ihre Bestellung der 3 Kühe Björn, Gülle und Agnätha.

MfG

Jörg Mustarmann-Spär

Dazu habe ich nun folgenden PHP-Code:

<?php  
 header("Content-type:text/html;charset=utf-8");  
 error_reporting(E_ALL | E_STRICT);  
?>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
  
 <head>  
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />  
  <title>Mailtest</title>  
 </head>  
  
 <body>  
  <?php  
   // Folgende Angabe wurde mir empfohlen (Ohne diese Angabe der hatte ich _mehr_ Probleme):  
   mb_internal_encoding('UTF-8');  
   // Ich definiere die Ausgangsinformationen:  
   $empfaenger_name="Jürgen Mustermann-Weiß";  
   $empfaenger_adresse="juergen.mustermann-weiss@example.org";  
   $sender_name="Jörg Mustermann-Spär";  
   $sender_adresse="joerg.mustermann-spaer@example.com";  
   $betreff="Bestellbestätigung Ihrer 3 Wunschkühe";  
   $mailinhalt="Sehr geehrter Herr Mustermann-Weiß,\r\rbitte bestätigen Sie uns noch Ihre Bestellung der 3 Kühe Björn, Gülle und Agnätha.\r\rMfG\r\rJörg Mustarmann-Spär";  
   // Ich verwende, wie von dedlfix empfohlen, die Funktion  
"mb_encode_mimeheader" für die Namen von Emfänger und Absender:  
   $empfaenger_name=mb_encode_mimeheader($empfaenger_name, "UTF-8", "Q");  
   $sender_name=mb_encode_mimeheader($sender_name, "UTF-8", "Q");  
   // Für Absender und Empfänger werden jetzt Namen und Mailadresse für die Form "Vorname Familienname < name@url >" zusammengesetzt:  
   $empfaenger=$empfaenger_name." <".$empfaenger_adresse.">";  
   $sender=$sender_name." <".$sender_adresse.">";  
   // Auch für den Betreff verwende ich die mb_encode_mimeheader-Funktion:  
   $betreff=mb_encode_mimeheader($betreff, "UTF-8", "Q");  
   // Der Rest bleibt, wie von Anfang an gehabt:  
   $header="";  
   $header.="MIME-Version: 1.0\n";  
   $header.="Content-type: text/plain; charset=utf-8\n";  
   $header.="Content-Transfer-Encoding: 8bit\n";  
   $header.="From: ".$sender."\n";  
   mail ($empfaenger,$betreff,$mailinhalt,$header, "-fjoerg.mustermann-spaer@example.com");  
  ?>  
 </body>  
  
</html>

Das führ zu Folgenden Ergebnissen:

Bei gmx.de steht als Absender: Jörg Mustermann-Spär joerg.mustermann-spaer@example.com, als Empfänger: Jürgen Mustermann-Weiß juergen.mustermann-weiss@example.org, als Betreff "Bestellbestätigung Ihrer 3 Wunschkühe" und auch der Mailinhalt ist genau so, wie er oben als Ziel steht. Bei gmx werden also sowohl im Namen des Empfängers, des Senders als auch im Mailbetreff, als in _allen_ Headerangaben _und_ im Mailinhalt nun alle Umlaute/Sonderzeichen _richtig_ dargestellt.

Bei der Webmailapplikation meines Webspace-Providers domainfactory.de das selbe Ergebnis. Alle Zeichen, sowohl bei Absender, als auch bei Empfänger sowie in der Mail selbst werden richtig dargestellt. Hier ist mir allerdings etwas anderes Suspektes aufgefallen. Bei meinen Versuchen habe ich jede Veränderung des Codes extra abgespeichert und auch die Mailversuche nummeriert, um den Überblick zu behalten. Bei meinen Tests gab es also zB den Betreff "Bestellbestätigung Ihrer 3 Wunschkühe - Mailtest 003". Dieser Betreff wurde bei gmx wirklich genau so dargestellt, bei meinem Webmailverwaltung sieht man _1_ Abstandzeichen nach dem großen M des Wortes "Mailtest 003". Da steht also als Betreff: "Bestellbestätigung Ihrer 3 Wunschkühe - M ailtest 003". Woran das liegt, ist mir unerklärlich.

Bei hotmail.com wieder _alles_ richtig, auch kein Abstand beim "Mailtest 003" im Betreff.

Bei yahoo.de ein _sehr_ seltsames Verhalten. Alle Sonderzeichen werden richtig dargestellt, allerdings gibt es in der Mail selbst _keine_ Zeilenumbrüche. Da steht in einer Wurst ein "Sehr geehrter Herr Mustermann-Weiß,bitte bestätigen Sie uns noch Ihre Bestellung der 3 Kühe Björn, Gülle und Agnätha.MfGJörg Mustarmann-Spär" geschrieben.

Bei cooltad.com, einem Freemailprovider, das _absolute_ Chaos: Da steht beim Empfänger nur ein "=?UTF-8?Q?J=C3=BCrgen=20Mustermann-Wei=C3=9F?=", als Absender "=?UTF-8?Q?J=C3=B6rg=20Mustermann-Sp=C3=A4r?=" und als Mailinhalt, wieder in einer Wurst durchgeschrieben, steht: "Sehr geehrter Herr Mustermann-Weiß,bitte bestätigen Sie uns noch Ihre Bestellung der 3 Kühe Björn, Gülle und Agnätha.MfGJörg Mustarmann-Spär".

Liegen die genannten Darstellungsfehler an mir? Hätte ich etwas anders/besser machen können, um _überall_ mein Wunschresultat zu bekomen? Oder ist der PHP-Code, so wie oben gepostet, in Ordnung und kann als Standardbeispiel verwendet werden? Ich nehme an, beim letzten Testbeispiel liegt es nicht an mir. Aber was mich mehr stört, ist das Weglassen der Zeilenumbrüche bei yahoo.

Sobald die Frage, ob mein Code jetzt so in Ordnung ist,  mit JA beantwortet werden kann, würde ich dann gerne den Thread fortführen und die einzelnen Zeilen, also PHP-Anweisung für Anweisung durchbesprechen.

Mit freundlichsten Grüßen

Der Brombeermilchtrinker

0 57

Sonderzeichen bei Mail mit Inhalt aus Formular

Brombeermilchtrinker
  • php
  1. 0

    Ursprungsproblem gelöst / nun anderes Codierungsproblem

    Brombeermilchtrinker
    1. 0
      Markus**
      1. 0
        Brombeermilchtrinker
    2. 0
      Sven Rautenberg
      1. 0
        Brombeermilchtrinker
        1. 1
          Sven Rautenberg
          1. 0
            Brombeermilchtrinker
        2. 0
          Jens Holzkämper
    3. 0
      dedlfix
      1. 0
        Brombeermilchtrinker
        1. 0
          dedlfix
          1. 0
            Brombeermilchtrinker
            1. 0
              dedlfix
              1. 0
                Sven Rautenberg
              2. 0
                Brombeermilchtrinker
                1. 0
                  dedlfix
                  1. 0
                    Brombeermilchtrinker
                    1. 0
                      Jens Holzkämper
                    2. 0
                      Vinzenz Mai
                      1. 0
                        Brombeermilchtrinker
                        1. 0
                          Vinzenz Mai
                          1. 0
                            Brombeermilchtrinker
                            1. 0
                              Brombeermilchtrinker
                              1. 0
                                Harlequin
                                1. 0
                                  Sven Rautenberg
                                2. 0
                                  Brombeermilchtrinker
                                  1. 0
                                    Jens Holzkämper
                                    1. 0
                                      Brombeermilchtrinker
                                      1. 0
                                        Jens Holzkämper
  2. 0
    Markus**
  3. 0

    Mail Codierung - Problem noch immer nicht gelöst

    Brombeermilchtrinker
    1. 0
      dedlfix
      1. 0
        Brombeermilchtrinker
        1. 0
          dedlfix
          1. 0
            Brombeermilchtrinker
            1. 0
              dedlfix
              1. 0
                at
              2. 0
                Brombeermilchtrinker
                1. 0
                  Harlequin
                  1. 0
                    Brombeermilchtrinker
                2. 0
                  dedlfix
                  1. 0
                    Brombeermilchtrinker
                    1. 0
                      dedlfix
                      1. 0

                        utf-Codierung / Verwendung von mysqli

                        Brombeermilchtrinker
                        1. 0
                          flowh
                        2. 0
                          dedlfix
                          1. 0
                            Brombeermilchtrinker
                            1. 0
                              Harlequin
                              1. 0
                                Brombeermilchtrinker
                              2. 0
                                dedlfix
                                1. 0
                                  Harlequin
                                  1. 0
                                    Brombeermilchtrinker
                            2. 0
                              flowh
                              1. 0
                                Brombeermilchtrinker
                            3. 0
                              dedlfix
                              1. 0
                                Brombeermilchtrinker