Maigu: mail() stellt kein html dar, aber warum?

Hallo Community

Ich habe leider ein Problem und bin langsam ratlos. Es geht um eine einfache Mail die mit ein bisschen HTML verschickt werden soll. Das HTML wird allerdings nicht dargetellt sondern die tags werden wie text ausgegeben.

Hier der Code:

  
        $to = "jemand@beispiel.com";  
        $subject = "Hello World";  
        $message = '<html><body>'  
            . $inhalt1  
            . '<br />'  
            . $inhalt2  
            . '<br />'  
            . $inhalt3  
            . '<br />'  
            . strip_tags($_POST['gh'])  
            . '<br />'  
            . strip_tags($_POST['xy'])  
            . '<br />'  
            . strip_tags($_POST['xc'])  
            . '<br />'  
            . strip_tags($_POST['cv'])  
            . '&nbsp;'  
            . strip_tags($_POST['sd'])  
            . '<br />'  
            . strip_tags($_POST['op'])  
            . '</body></html>';  
        $from = strip_tags($_POST['mail']);  
        $headers = "From:" . $from;  
        $headers .= "MIME-Version: 1.0\r\n";  
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";  
        mail($to,$subject,$message,$headers);  

Habe dann diese Seite gefunden http://css-tricks.com/2866-sending-nice-html-email-with-php/, jedoch sehe ich den Unterschied zu meinem Code nicht. Am Client liegt es auch nicht, habe es mit mehreren probiert und bei allen ist HTML Inhalt zugelassen.

  1. Moin!

    Ich habe leider ein Problem und bin langsam ratlos. Es geht um eine einfache Mail die mit ein bisschen HTML verschickt werden soll. Das HTML wird allerdings nicht dargetellt sondern die tags werden wie text ausgegeben.

    Warum tust du dir das an, eine 100% korrekte, standardkonforme Mail selbständig zusammenfriemeln zu wollen?

    Wie man sieht, kann man da leicht scheitern, wenn man auch nur das Geringste vergisst.

    Ich empfehle: http://aktuell.de.selfhtml.org/artikel/php/form-mail-advanced/

    - Sven Rautenberg

    1. Hello,

      Warum tust du dir das an, eine 100% korrekte, standardkonforme Mail selbständig zusammenfriemeln zu wollen?

      Vielleicht, weil er die Energie des Verstehens verspüren möchte?

      Wie man sieht, kann man da leicht scheitern, wenn man auch nur das Geringste vergisst.

      Ich empfehle: http://aktuell.de.selfhtml.org/artikel/php/form-mail-advanced/

      Das ist ja nett von Dir, dass Du jetzt auch auf Fertiglösungen hinweist. MMn solltest Du aber die Möglichkeit zum Selbermachen damit nicht totreden, sondern die fertigen Sachen immer nur alternativ anbieten :-)

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. Hallo Community

    Hallo Du!

    Bevor Du dDich an die Lösung mit dem von Sven Rautenberg vorgeschlagenem SWIFT-Mailer machst solltest Du mal den Quelltext einer HTML-Formatierten Nachricht ansehen.

    Der sieht ETWA so aus:

    Content-Type: multipart/alternative;
    boundary="_Trenner1_"
    --_Trenner1_
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    Hier der Text im Text-Format für die Benutzer, welche das HTML nicht wollen.

    --_Trenner1_
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    Ganz wichtig:
    Hier der Text im Text-Format für die Benutzer, welche das HTML nicht wollen.

    --_Trenner1_
    Content-Type: text/html; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    <html>
    <head>
       <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-1">
    </head>
    <body>
    <h1>Ganz wichtig:</h1>
    <p>Hier der Text für Outlook- und HTML-Junkies</p>
    </body>
    --_Trenner1_--

    '_Trenner1_' repräsentiert hier einen regelmäßig längeren, eindeutigen String, der zumeist aus Ziffern und Buchstaben besteht und auch dann noch eindeutig sein soll, wenn tausende(!) Mails in einer Maildatei zusammengefasst werden oder das Mail ein paar mal hin- und hergeht. Also eine Zeitkomponente, eine ausreichend große Zufallskomponente, beide womöglich gesalzen und "hashed" (MD5, SHA...)

    '_Trenner1_' kann also so aussehen:
    _FACD2D94015A1F40A100486071421C910845BB0CF6_

    Axhte auf die beiden Minus-Zeichen vor _Trenner1_ und auf die beiden Minuszeichen nach dem letzten Trenner.

    Wenn Du noch Grafiken als Ressource beifügen willst wird es geringfügig komplizierter.
    Ach so: Machst Du das "zu Fuß", dann musst Du auch für das Content Encoding und das Worwrap (in dieser Reihenfolge) kümmern.

    Mehr steht in den RFC zum Format von Mails.

    fred

    1. Moin!

      Bevor Du dDich an die Lösung mit dem von Sven Rautenberg vorgeschlagenem SWIFT-Mailer machst solltest Du mal den Quelltext einer HTML-Formatierten Nachricht ansehen.

      Der sieht ETWA so aus:

      Nein, sieht er nicht. Das, was du hier vorstellst, ist eine Mime-Multipart-Mail mit alternativem Plain-Text-Inhalt.

      Warum deine alternative Mail ZWEI Plain-Text-Inhalte hat, ist mir nicht so ganz verständlich.

      Und letztendlich ist dieses Format eben ganz leicht mit existierenden Bibliotheken erstellt, und man muss sich um wirklich nichts selbst kümmern - das ist viel zuverlässiger, als das selbst zu stricken.

      Und ansonsten: HTML kann man auch ohne Multipart verschicken.

      Wenn Du noch Grafiken als Ressource beifügen willst wird es geringfügig komplizierter.
      Ach so: Machst Du das "zu Fuß", dann musst Du auch für das Content Encoding und das Worwrap (in dieser Reihenfolge) kümmern.

      Mehr steht in den RFC zum Format von Mails.

      Schade, dass du die notwendigen RFCs, die zum Verständnis des Aufbaus von standardkompatiblen Mails nicht alle auflistest.

      - Sven Rautenberg

      1. Hallo,

        Der sieht ETWA so aus:
        Nein, sieht er nicht.

        nein, *sollte* er aber.

        Das, was du hier vorstellst, ist eine Mime-Multipart-Mail mit alternativem Plain-Text-Inhalt.

        Richtig, und genau so sollte eine "HTML-Mail" grundsätzlich aufgebaut sein - immer mit einem Plaintext-Teil als Fallback.

        Warum deine alternative Mail ZWEI Plain-Text-Inhalte hat, ist mir nicht so ganz verständlich.

        Möglicherweise ein Copy&Paste Error. Im alternativen HTML-Teil fehlt außerdem die Leerzeile nach den lokalen Headern.

        Und letztendlich ist dieses Format eben ganz leicht mit existierenden Bibliotheken erstellt, und man muss sich um wirklich nichts selbst kümmern - das ist viel zuverlässiger, als das selbst zu stricken.

        Es ist aber vom Aufbau her so schön trivial, dass ich es viel einfacher finde, das mal schnell "selbst zu stricken", als mich erst in die Dokumentation irgendwelcher Fremdbibliotheken einzulesen.

        Und ansonsten: HTML kann man auch ohne Multipart verschicken.

        Ja. Sollte man aber nicht.

        Ciao,
         Martin

        --
        why the heck do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?
          (wahsaga)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Moin!

        Schade, dass du die notwendigen RFCs, die zum Verständnis des Aufbaus von standardkompatiblen Mails nicht alle auflistest.

        Ach, Tach!

        Nun, die mögen zum Entwickeln als Referenz recht dienlich sein, meinetwegen auch zum Entscheiden von Streitereien, aber zum Lernen der Grundbegriffe und von Grundfertigkeiten sind die ziemlich untauglich.

        Da ist im Sinne der Diadaktik ein Beispiel zunächst sehr viel tauglicher.

        Scheinbar braucht es jetzt auch noch eine RFC die beschreibt wie ein in Uppercases geschriebenes ETWA zu bewerten ist ...

        Fred