Mails mit Bildern - HTML Mails mit Inline-Attachments

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

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

    // Mailtext im Plain-Format (deutscher und englischer Text untereinander)...
    $plain = "Über die Anmeldung
------------------
Hier finden Sie Informationen zu Ihrem neuen Account.


About Registration
------------------
Here you find more information about your account.
";
    // Inhalt nach Quoted-Printable konvertieren
    $plain = imap_8bit ($plain);

    // und im HTML-Format (mit eingebettetem Logo und Flaggen zum Anklicken, die
    // zur jeweiligen Sprachversion führen).
    $html = "
<html>
    <head>
        <title>Titel der Seite</title>
    </head>
    <body>
        <img alt=\"EvoComp Logo\" src=\"cid:logo\" />
        <a href=\"#en\"><img border=\"0\" alt=\"englisch\" src=\"cid:en\" /></a> &bull; <a href=\"#de\"><img border=\"0\" alt=\"Deutsch\" src=\"cid:de\" /></a>
        <a name=\"de\"><h1>Über die Anmeldung</h1>
        <p>Hier finden Sie Informationen zu Ihrem neuen Account.</p>
        <a name=\"en\"><h1>About registration</h1></a>
        <p>Here you find more information about your account.</p>
    </body>
</html>";
    // Inhalt nach Quoted-Printable konvertieren
    $html = imap_8bit ($html);

    // Trenner zur Trennung von Teilbereichen in der Mail
    $boundary = strtoupper (md5 (uniqid (time ())));

    // Plain-Text und HTML-Version der eMail im Header zusammenstellen
    $header = // Header für die Absenderadresse
          "From: $from\r\n" .
          // Angabe der genutzten Mime-Type-Version
          "MIME-Version: 1.0\r\n" .
          // Content-Type, der besagt, dass die eMail mehrere alternative Darstellungen
          // (Quellformate Plain-Text und HTML) enthält. Die Trennung der Versionen erfolgt
          // mittels des in Boundary angegebenen Trennerstrings.
          // Die erste Ebene (Trennung von Plain-Text- und HTML-Version) wird mit dem
          // Suffix _top unterschieden.
          "Content-Type: multipart/alternative; boundary=\"" . $boundary . "_top\"\r\n\r\n" .
          // Einleitung der ersten (Plain-Text) Version unter Angabe der Kodierung und dem
          // Mime-Type (text/html).
          "--" . $boundary . "_top\r\n" .
          "Content-Type: text/plain; charset=\"utf-8\"\r\n" .
          "Content-Transfer-Encoding: quoted-printable\r\n\r\n" .
          // Textversion der Mail.
          $plain . "\r\n" .
          // Einleitung der alternativen Version (Mail im HTML-Code); immernoch erste
          // Ebene.
          "--" . $boundary . "_top\r\n" .
          // Anfang des Unterbereichs, welcher zur Trennung von Teilbereichen den Suffix
          // _sub verwendet (boundary). Als Content-Type wird multipart/related angegeben.
          // Hierdurch wird festgelegt, dass das Dokument weitere Unterelemente (im Beispiel
          // die eingebetteten Bilder) enthällt.
          "Content-Type: multipart/related; boundary=\"" . $boundary . "_sub\"\r\n\r\n" .
          // Einleiten des ersten enthaltenen Elements (das eigentliche HTML-Dokument)
          "--" . $boundary . "_sub\r\n" .
          // Angaben zum verwendeten Mime-Type der HTML-Variante (text/html) und die
          // im HTML-Dokument verwendete Kodierung.
          "Content-Type: text/html; charset=\"utf-8\"\r\n" .
          "Content-Transfer-Encoding: quoted-printable\r\n\r\n" .
          // Einfügen des eigentlichen HTML-Dokuments.
          $html . "\r\n";

    // Erster Inline-Anhang ist ein Logo
    $header .=  // Auch hier wieder Einleitung des Attachments durch ein Trennerstring
            "--" . $boundary . "_sub\r\n" .
            // Vergabe eines eindeutigen Namens (id), unter dem das eingebettete
            // Element im HTML-Code angesprochen werden kann.
            "Content-ID: <logo>\r\n" .
            // Mime-Type des Objekts (hier ein JPG-Bild mit Mime-Type image/jpg)
            "Content-Type: image/jpg\r\n" .
            // Festlegung der Kodierung in Base64, da das Bild binäre Daten enthält
            "Content-Transfer-Encoding: base64\r\n" .
            "Content-Disposition: inline; filename=\"logo.jpg\"\r\n\r\n" .
            // Anhängen der zuvor kodierten Bilddatei, die aus dem Dateisystem des Webservers
            // entnommen wird.
            chunk_split (base64_encode (fread (fopen($_SERVER['DOCUMENT_ROOT'] . '/pic/logo_evocomp.jpg',"r"), filesize ($_SERVER['DOCUMENT_ROOT'] . '/pic/logo_evocomp.jpg'))));

    // Als nächstes Inline-Attachment wird ein Bild eingefügt, welches eine englische Flagge darstellt
    $header .= "--" . $boundary . "_sub\r\n" .
           "Content-ID: <en>\r\n" .
           "Content-Type: image/gif\r\n" .
           "Content-Transfer-Encoding: base64\r\n" .
           "Content-Disposition: inline; filename=\"en.gif\"\r\n\r\n" .
           chunk_split (base64_encode (fread (fopen($_SERVER['DOCUMENT_ROOT'] . '/pic/en.gif',"r"), filesize ($_SERVER['DOCUMENT_ROOT'] . '/pic/en.gif'))));

    // Das letzte Attachment stellt eine deutsche Flagge dar
    $header .= "--" . $boundary . "_sub\r\n" .
           "Content-ID: <de>\r\n" .
           "Content-Type: image/gif\r\n" .
           "Content-Transfer-Encoding: base64\r\n" .
           "Content-Disposition: inline; filename=\"de.gif\"\r\n\r\n" .
           chunk_split (base64_encode (fread (fopen($_SERVER['DOCUMENT_ROOT'] . '/pic/de.gif',"r"), filesize ($_SERVER['DOCUMENT_ROOT'] . '/pic/de.gif'))));

    // Letzter eingebetteter Bereich der HTML-Version erreicht
    $header .= "--" . $boundary . "_sub--\r\n";

    // Abschluß der HTML-Version in erster Ebene
    $header .= "--" . $boundary . "_top--";

    // Betreff zur eMail definieren...
    $subject = "Ihre Anmeldung bei uns";

    // und am Ende des Scripts die zusammengestellte eMail versenden.
    mail ($to, $subject, '', $header);
?>
Letzte Posts aus unserem Forum

Wer kennt .....

Hallo erstmal wer kennt von euch einen WEbprogrammieren,desginer der mir eine Seite erstellen kann ,Communityportal sowas in der art wie ... » mehr

von NCWebmaster am Mittwoch, 7. Oktober 2009 00:32 in PHP - bisher 2 Antworten
Letzter Beitrag: Montag, 17. Dezember 2012 16:57 von maharadja

...einen guten Onlineshop für Taufringe? Ich habe bisher Taufringe Direkt gefunden und wollte mal nachhaken, ob der Shop für Taufringe wirklich so ... » mehr

Webentwickler Konferenz in Hamburg

Hallo Zusammen, Am 20./21. Mai findet in Hamburg die erste Developer Conference 2011 statt. Wie der Name bereits verrät, handelt die Konferenz rund ... » mehr

von devcon-hamburg am Dienstag, 12. April 2011 16:50 in PHP - noch nicht beantwortet

bedingte Weiterleitung in Kontaktformularen

Hallo zusammen, ich habe ein kleines Problem: Ich brauche bei der Entwicklung eines Kontaktformulares für eine Website eine bedingte Weiterleitung ... » mehr

von scatha am Donnerstag, 10. März 2011 01:12 in PHP - noch nicht beantwortet

Gesucht: Auslesen einer externen Website

Mein vorhaben ist recht simpel aber ich bin php noob (hoffe das entschuldigt es nen bissl xD) und hab kp wie ichs anfangen soll. Und zwar möchte ich ... » mehr

von HeathenMan am Dienstag, 1. Februar 2011 22:57 in PHP - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 3. Februar 2011 14:43 von alm

Hallo, am einfachsten und kompaktesten kann man das mit einem regulären Ausdruck machen. Einfach mal nach der Funktion preg_match_all suchen und den ... » mehr

Zeilenumbruch in der Bildergalerie-Beschriftung

Hallo, die Bildergalerie mit php und js ist super, jedoch möchte ich gern zu meinen Bildern verschiedene Bemerkungen machen und zwar untereinander, ... » mehr

von Sylma am Mittwoch, 26. Januar 2011 01:13 in PHP - bisher 1 Antwort
Letzter Beitrag: Freitag, 28. Januar 2011 10:16 von alm

Hallo, ich nehme an, dass \n im Beschreibungstext nicht funktioniert aber versuchen kann man es. Ansonsten: Schon mal mit einer UTF-Sequenz ... » mehr

¬ Tutorials



¬ Insolvenzrecht