Rouven Thimm: mail(), HTML-Mails und Outlook

Hallo zusammen,

ich bastele gerade an meinem Support und möchte meine Webseite eine E-Mail verschicken lassen. Nun gut, also die mail()-Funktion. Ich habe an einigen Stellen einige Header nachgeschlagen um zu versuchen eine schöne HTML-Mail zu versenden:
   $l_m_headers  = "From: Support for support@domain.tld\r\n";
   $l_m_headers .= "Cc: $l_email\r\n";
   $l_m_headers .= "Reply-To: Support for support@domain.tld\r\n";
   $l_m_headers .= "MIME-VERSION: 1.0\r\n";
   $l_m_headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
   $l_m_headers .= "Content-Transfer-Encoding: 8bit\r\n";

Als Body verpasse ich der Nachricht dann ganz normalen HTML-Quellcode.
Nun ist es so, dass z.B. GMX tatsächlich alles richtig erkennt und mir einen Button anbietet "Volldarstellung" weil die Mail eben HTML-Inhalt hat. Klickt man dort drauf, dann funktioniert alles wunderbar. Wenn ich die Nachricht allerdings mit Outlook XP aufrufe, dann sieht das ganze so aus:
Content-type: text/html; charset=iso-8859-1

Content-Transfer-Encoding: 8bit

X-Mailer: PHP 4.2.3
Message-Id: 20021222160259.5A28F63922@basicbox4.server-home.net
Date: Sun, 22 Dec 2002 17:02:59 +0100 (CET)
X-UIDL: l_O!!25'!!flP"!Vaa"!

<html><head><title>Contact-Form from domain.tld</title></head>

<body>

<b>Message-ID: </b>RSY65ZYR3210

<br>

Please include this message-id in all replies to allow for faster processing.

<br><br>

--------- ... -----------

Kann mir dort zufällig jemand einen Tipp geben woher die doppelten Zeilenumbrüche kommen und warum Outlook die header lieber anzeigt statt sie zu interpretieren?

Danke!

Rouven

  1. Hallo Rouven,

    Kann mir dort zufällig jemand einen Tipp geben woher die doppelten Zeilenumbrüche kommen und warum Outlook die header lieber anzeigt statt sie zu interpretieren?

    Du musst _anscheinend_ (so ist auch die erste Notiz im Handbuch, http://www.php3.de/manual/de/function.mail.php) \n als Trennzeichen für die einzelnen Header-Felder nehmen und nicht \r\n. (_obwohl_ letzteres laut RFC822 korrekt ist)

    Grüße,

    Christian

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    1. Hi,

      Du musst _anscheinend_ (so ist auch die erste Notiz im Handbuch, http://www.php3.de/manual/de/function.mail.php) \n als Trennzeichen für die einzelnen Header-Felder nehmen und nicht \r\n. (_obwohl_ letzteres laut RFC822 korrekt ist)

      Kann es sein, daß PHP die \n automatisch durch \r\n ersetzt?
      Wenn dann schon \r\n dastünde, käme \r\r\n raus, was wieder Probleme bereitet...
      Ist nur so ne Vermutung, kein gesichertes Wissen!

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      1. Hallo,

        also das mit den \n alleine funktioniert schon richtig, da kommt dann genau die richtig Mail raus.
        Wäre nur halt die Frage ob es da jetzt Mailing-Systeme gibt die dabei Mist machen wenn es nicht dem RFC entspricht...

        Trotzdem danke!

        Rouven

        1. Hallo Rouven,

          also das mit den \n alleine funktioniert schon richtig, da kommt dann genau die richtig Mail raus.

          Dann bestehen 2 Möglichkeiten: PHP macht automatisch ein \r\n draus _oder_ Outlook hält sich nicht an den RFC.

          Wäre nur halt die Frage ob es da jetzt Mailing-Systeme gibt die dabei Mist machen wenn es nicht dem RFC entspricht...

          Wenn ersteres der Fall ist, dann brauchst Du Dir keine Gedanken zu machen, wenn letzeres der Fall ist, dann mache eine einfach Rechnung:

          Wie viele Systeme kennst Du, die mit \n nicht klar kommen? 0
          Wie viele potentielle Systeme kann es geben, die mit \n nicht klar kommen? wenige, sonst wäre das aufgefallen
          Wie viele Systeme kennst Du, die mit \r\n nicht klar kommen? mind. 3 (Outlook, Eudora, Netscape 4 (laut Kommentar zum Manual))

          => die Systeme, die bei \r\n versagen sind in der Überzahl, von daher bist Du gezwungen, \n zu verwenden.

          Ich bin aber immer noch der Auffassung, dass PHP automatisch \r\n draus macht, anders kann ich mir das Fehlverhalten von Outlook, Eudora *und* Netscape 4 nicht erklären.

          Grüße,

          Christian

          --
          Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
          1. Hi,

            Ich bin aber immer noch der Auffassung, dass PHP automatisch \r\n draus macht, anders kann ich mir das Fehlverhalten von Outlook, Eudora *und* Netscape 4 nicht erklären.

            Ich habe es gerade mal ausprobiert:
            wenn ich \n im Header der Mail schreibe, geht \r\n über die Leitung (Netzwerkmonitor...) zum smtp-Server.
            wenn ich \r\n im Header der Mail schreibe, geht \r\r\n über die Leitung zum smtp-Server.

            Sieht also wirklich so aus, als ob PHP aus \n ein \r\n macht.

            cu,
            Andreas

            --
            Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.