tropenberta: mail header

hi leuts

ich versende in php ein formular mit dem "mail"-befehl.
wenn ich aber bei straße irgendwie seestraße mache kommt in der mail für das "ß" kryptische zeichenfolge.

php:
$header = 'charset=UTF-8'  ;

mail("$empf","Ein neuer Kontakt","Hallo. Sie haben eine neue Kontaktanfrage von : \n\n\nName : $_POST[Name]\n\nStraße : $_POST[Strasse]\n\nWohnort : $_POST[Ort]\n\nFirma : $_POST[Firma]\n\nTelefon : $_POST[Telefon]\n\nE-mail : $_POST[Email]\n\nGesendete Nachricht :\n$_POST[Nachricht]","$header");

is irgendwie doof. hab scho ne stunde mit dem mist verbracht, seh aber kein erfolg. bitte bitte gibt mal nen tip damit die mail korrekt versendet wird.

habs noch wie folgt probiert - dann muss ich in der mail html anzeigen drücken und es wird korrekt ausgegeben, aber leider ohne der form die ich beim mail befehl gemacht hab.
Lösung denke ich wäre den mail befehl mit html zu gestaltn oder gehts irgendwie einfacher ?

php:
$header .= 'Content-type: text/html; charset=UTF-8';

  1. hi,

    $header .= 'Content-type: text/html; charset=UTF-8';

    Das ist ein guter Anfang ;)
    Es gehört jedoch ein bischen mehr dazu, z.B. der Header
    Content-Transfer-Encoding: quoted-printable
    oder
    Content-Transfer-Encoding: base64

    oder, je nachdem, wie der Inhalt kodiert ist, damit am Ende nur ASCII steht. Btw., auch in einem Header selbst darf nur ASCII stehen.

    Weitere Infos hier

    Hotti

    1. Tach!

      $header .= 'Content-type: text/html; charset=UTF-8';

      Das ist ein guter Anfang ;)
      Es gehört jedoch ein bischen mehr dazu, z.B. der Header
      Content-Transfer-Encoding: quoted-printable
      oder
      Content-Transfer-Encoding: base64

      oder, je nachdem, wie der Inhalt kodiert ist, damit am Ende nur ASCII steht. Btw., auch in einem Header selbst darf nur ASCII stehen.

      Man kann diesen Aufwand betreiben, aber der Mail-Body ist im Gegensatz zu den Headern nicht zwingend auf ASCII beschränkt. Es geht hier um einen Formmailer, der in einem genau definierten Umfeld die Mails versendet: vom Webserver zu einem konkreten Mail-Server und zu einem oder wenigen Clients. Der Aufwand des 7-Bit-Kodierens des Bodys ist nicht gerechtfertigt, wenn es in diesem Umfeld keine Probleme gibt. Etwas anders sähe ein Mail-Versand in die weite Welt aus, bei dem man mit allen möglichen Mailservern rechnen muss.

      dedlfix.

      1. @ dedlfix.

        danke für die ganzen infos. hat mich an mein ziel gebracht. echt fett danke

  2. Tach!

    ich versende in php ein formular mit dem "mail"-befehl.

    Man nennt mail() übrigens konkret eine Funktion.

    wenn ich aber bei straße irgendwie seestraße mache kommt in der mail für das "ß" kryptische zeichenfolge.
    php:
    $header = 'charset=UTF-8'  ;

    Das ist ein Fantasie-Header, den wohl kein Mail-Client berücksichtigen wird. Eine Charset-Angabe kann immer nur zusammen mit dem Content-Type-Header angegeben werden. In dem bereits gestern verlinkten Beispiel #4 auf der PHP-Seite zu mail() ist einer für HTML zu sehen, für Plain-Text heißt die Angabe text/plain.

    php:
    $header .= 'Content-type: text/html; charset=UTF-8';

    So muss das aussehen, allerdings text/plain.

    Und dann müssen Header mit Zeilenumbruch getrennt werden (\r\n). Wenn das allerdings dein einziger Header ist, dann ist der .= unsinnig und ein einfaches = vorzuziehen.

    mail("$empf","Ein neuer Kontakt","Hallo. Sie haben eine neue Kontaktanfrage von : \n\n\nName : $_POST[Name]\n\nStraße : $_POST[Strasse]\n\nWohnort : $_POST[Ort]\n\nFirma : $_POST[Firma]\n\nTelefon : $_POST[Telefon]\n\nE-mail : $_POST[Email]\n\nGesendete Nachricht :\n$_POST[Nachricht]","$header");

    Einfache Variablen in "" einzurahmen ist unsinnig.

    Lösung denke ich wäre den mail befehl mit html zu gestaltn oder gehts irgendwie einfacher ?

    Das Beispiel #4 zeigt das Erstellen einer Mail mit nur einem HTML-Teil. Üblicherweise wird jedoch eine mehrteilige Mail (multipart) erstellt, mit einem Plaintext- und dem HTML-Teil drin. Sowas zu Fuß zu erstellen ist jedoch noch drei Ecken komplexer. Wenn du das vorhast, wäre Fortgeschrittener PHP-Formmailer ein Einstieg in ein Hilfmittel, das dir die Arbeit abnimmt.

    dedlfix.