PHP Mail Headers - eMails mit Header-Informationen

Die in den Headern Content-Type und Content-Type-Encoding angegebenen Kodierungsformen gelten ausschließlich für den Inhalt der Mail (message-body). Auf Umlaute im Betreff und in den Header-Angaben wirken sich diese Angaben – je nach benutztem Mail-Client – nicht aus.

<?php
    // Adresse des Mail-Empfängers
    $to = "Empfaenger <empfaenger@domainname.de>";

    // eMail-Adresse die angibt von wem die Mail versendet wurde
    $from = "Absender <absender@domainname.de>";

    // Zusätzliche eMail-Header an die Mail anhängen
    $headers = "From: $from\r\n" .
           // Version des verwendeten Mime-Standards
           "MIME-Version: 1.0\r\n" .
           // Zeichensatz, in dem die Mail kodiert ist (ISO-8859-1, UTF-8...)
           "Content-Type: text/plain; charset=\"ISO-8859-1\"\r\n" .
           // Header zur Kodierung der Mail Content-Transfer-Encoding
           // 7bit/8bit - Einzelne Zeichen werden mit 7 bzw. 8 Bit kodiert
           // base64 - Kodierung von binären Daten (z.B. für Anhänge)
           // quoted-printable - Kodierung Text mit Sonderzeichen durch die Sequenz
           // '=Hexadezimalwert des Zeichens' (Beispielsweise =FC für das Zeichen ü)
           // Also Quoted-Printable, da hier nur Text verschickt wird.
           "Content-Transfer-Encoding: quoted-printable\r\n";

    // Betreffzeile für die Mail
    $subject = "Vielen Dank für Ihre Registrierung!";

    // Inhalt der eMail
    $message_body = "Sie haben sich bei uns als Benutzer registriert...";

    // Mail mit definierten Headers versenden
    mail ($to, $subject, $message_body, $headers);
?>

Sonderzeichen / Umlaute in Header oder Subject von Mails

Aufgrund der Tatsache dass Empfänger, Nachrichtenheader und Subject mit 7-Bit kodiert werden, müssen Sonderzeichen und Umlaute hier als Quoted-Printable oder in Base64-Kodierung angegeben werden. Da im Header einer Mail und im Subject normalerweise keine binären Zeichen enthalten sind, sollte hier die Quoted-Printable-Kodierung verwendet werden.

<?php
    // Kodierung der eMail-Adresse des Empfängers mit Quoted-Printable
    // Der Mail-Client nutzt den angegebenen Zeichensatz zur Darstellung
    // Format des kodierten Strings: =?<Zeichensatz>?<Kodierung>?<Text>?=
    // Als Zeichensatz wird ISO-8859-1 gewählt.
    // Gültige Optionen für die Kodierung:
    // Q - Quoted-Printable
    // B - Base64
    $to = "=?ISO-8859-1?Q?Empf=E4nger?= <empfaenger@domainname.de>";
    // oder wir überlassen die Kodierung PHP
    $to = imap_8bit ("Empfänger") . " <empfaenger@domainname.de>";

    // eMail-Adresse des Absenders
    $from = "Absender <absender@domainname.de>";

    // Mail-Header für die zu verschickende eMail
    $headers = "From: $from\r\n" .
           "MIME-Version: 1.0\r\n" .
           "Content-Type: text/plain; charset=\"ISO-8859-1\"\r\n" .
           "Content-Transfer-Encoding: quoted-printable\r\n";

    // Auch das Subject wird als Quoted-Printable kodiert, da Umlaute enthalten sind.
    $subject = "=?ISO-8859-1?Q?Neuer_Benutzer:_Alexander_M=FCller?=";
    // oder wieder mit PHP
    $subject = imap_8bit ("Neuer Benutzer: Alexander Müller");

    // Der Rest wie zuvor...
    $message_body = "Sie haben sich bei uns als Benutzer registriert...";
    mail ($to, $subject, $message_body, $headers);
?>

¬ Tutorials



¬ Insolvenzrecht