Markus: HTML E-Mail Aufbau - Mime

Hallöchen zusammen,

ich hab mich etz durch das forum gewuselt, aber bin einfach nicht den entscheidenden schritt weiter gekommen. es geht darum, dass ich eine mail verschicken will, die einen text und einen html teil beinhaltet. ferner sollen die bilder integriert werden.

was ich bräuchte ist mal ein kleiner beispiel aufbau. ich versteh einfach nicht, wo und wie ich die diese ganzen tags wie, text/html text/plain multipart/alternative etc. unterbring.

hilfreich fand ich diesen thread
http://forum.de.selfhtml.org/archiv/2004/2/t73236/#m421821

nur wie sieht das ganze dann in einer html datei aus? wie bau ich diese struktur darin auf? ich hab meine html datei im editor offen, was muss ich wie und an welcher stelle einfügen?

ich möchte das ganze nicht mit php realisieren.
als was muss ich die datei dann abspeichern? *.eml?

es wärte absolute klasse, wenn mir jemand einfach eine mini html datei schicken könnte, in der der aufbau und das einbinden einer beispielgrafik steht. das würde mir erheblich weiter helfen.

danke für die hilfe!

tammo

  1. Halihallo Markus

    ich hab mich etz durch das forum gewuselt, aber bin einfach nicht den entscheidenden schritt weiter gekommen. es geht darum, dass ich eine mail verschicken will, die einen text und einen html teil beinhaltet. ferner sollen die bilder integriert werden.

    Mit was willst du diese Mail versenden?

    was ich bräuchte ist mal ein kleiner beispiel aufbau. ich versteh einfach nicht, wo und wie ich die diese ganzen tags wie, text/html text/plain multipart/alternative etc. unterbring.

    Zuerst: Was ist eine e-mail?
    Eine E-Mail ist kein HTML, kein Text, kein Bild. Es hat eine ganz
    eigene Form. Die einfachste sieht etwa so aus:

    From: me@me.org
    To: you@you.org
    Subject: Betreffszeile
    Content-Type: text/html

    hello you.

    Jede E-Mail besteht aus einem oder mehreren sogenannten
    Entities/Parts. Diese enthalten jeweils eine "Information", also z.B.
    ein Bild, den HTML-Code der Mail oder den Text-Part. Diese Entities
    können verschachtelt sein. Das Mail von oben besteht z.B. aus nur
    einem Entity, dem Top-Entity, welches im Header die Absender und
    Empfängeradresse speichert, im Body (getrennt vom Header durch zwei
    Leerzeilen [CRLFCRLF]) entweder Text oder HTML (definiert durch den
    Content-Type Header).

    Oder aber, die Mail besteht aus verschachtelten Entities, wie dies in
    deinem Falle etwa so aussieht:

    Top-Entity (multipart/alternative)
      |
      +-- Text (text/plain)
      |
      +-- HTML+Ressourcen (multipart/related)
            |
            +-- HTML-Code (text/html)
            |
            +-- ein eingebettetes Bild (image/gif)
            |
            +-- ein zweites Bild (image/png)

    Hier wird jeder Entity ein sogenannter Boundary zugewiesen, so dass
    der Mail-Client (Outlook, thebat, ...) die Verschachtelung überhaupt
    "dekodieren" kann.
    Derartig hochverschachtelten Mails würde ich nicht umbedingt per
    Hand erstellen, hier helfen die kleinen Helferlein (Perl, PHP, ...).

    nur wie sieht das ganze dann in einer html datei aus? wie bau ich diese struktur darin auf? ich hab meine html datei im editor offen, was muss ich wie und an welcher stelle einfügen?

    Jetzt solltest du verstanden haben, dass dies absolut gar nichts mit
    HTML zu tun hat, denn mit dem sogenannten MIME (Multipurpose
    Internet Mail Extensions). http://www.mhonarc.org/~ehood/MIME/

    Prinzipiell geht es bei E-Mails nur um ganz normale Text-Daten.
    Text-Daten aber, die ein ganz bestimmtes Format haben (ein Format,
    eben, welches eben von jedem Mail-Client gelesen werden kann).

    ich möchte das ganze nicht mit php realisieren.

    dann gebe ich dir unten halt den Beispielcode in Perl ;-)

    als was muss ich die datei dann abspeichern? *.eml?

    .eml, meinetwegen. Hauptsache dein Mail-Client öffnet das Ding. Warum
    willst du es denn abspeichern? - Zweckbindender wäre senden.

    es wärte absolute klasse, wenn mir jemand einfach eine mini html datei schicken könnte, in der der aufbau und das einbinden einer beispielgrafik steht. das würde mir erheblich weiter helfen.

    Beispiel-Code für Perl:
    #!/usr/bin/perl

    use strict;
    use warnings;

    use MIME::Lite;

    my $hauptEntity = MIME::Lite->new(
    From => '"me" from@me.org',
    To => '"you" to@you.org',
    Subject => 'Eine Test E-Mail',
    Type => 'multipart/alternative',
    );

    my $textEntity = $hauptEntity->attach(
    Type => 'text/plain',
    Data => 'Dies erscheint bei Mail-Clients ohne HTML-Unterstützung',
    );

    my $htmlEntity = $hauptEntity->attach(
    Type => 'multipart/related',
    );

    $htmlEntity->attach(
    Type => 'text/html',
    Data => '<html><head></head><body style="font-face: Arial, Helvetica, sans-serif; font-size: 16pt">Dies erscheint bei Mail-Clients mit
      HTML-Unterstützung. Sieh da:<br /><br /><img src="cid:<test>" /></body></html>',
    );

    my $gif = $htmlEntity->attach(
    Type => 'image/gif',
    Path => '/path/to/a/gif_file.gif',
    );

    $gif->attr( 'Content-Id' => '<test>' );

    open(F, '>./mail.eml') || die("cannot open mail.eml! $@");
    print F $hauptEntity->as_string;
    close(F);

    ----

    und ausgegeben würde dir folgende mail.eml:

    Content-Transfer-Encoding: binary
    Content-Type: multipart/alternative; boundary="_----------=_110975836530120"
    MIME-Version: 1.0
    X-Mailer: MIME::Lite 3.01 (F2.71; A1.58; B2.12; Q2.03)
    Date: Wed, 2 Mar 2005 10:12:45 UT
    From: "me" from@me.org
    To: "you" to@you.org
    Subject: Eine Test E-Mail

    This is a multi-part message in MIME format.

    --_----------=_110975836530120
    Content-Disposition: inline
    Content-Length: 55
    Content-Transfer-Encoding: binary
    Content-Type: text/plain

    Dies erscheint bei Mail-Clients ohne HTML-Unterstützung
    --_----------=_110975836530120
    Content-Transfer-Encoding: binary
    Content-Type: multipart/related; boundary="_----------=_110975836530121"

    This is a multi-part message in MIME format.

    --_----------=_110975836530121
    Content-Disposition: inline
    Content-Length: 206
    Content-Transfer-Encoding: binary
    Content-Type: text/html

    <html><head></head><body style="font-face: Arial, Helvetica, sans-serif; font-size: 16pt">Dies erscheint bei Mail-Clients mit
      HTML-Unterstützung. Sieh da:<br /><br /><img src="cid:<test>" /></body></html>
    --_----------=_110975836530121
    Content-Disposition: inline; filename="gif_file.gif"
    Content-Id: <test>
    Content-Transfer-Encoding: base64
    Content-Type: image/gif; name="gif_file.gif"

    [base64 codierter Inhalt von gif_file.gif, stripped]

    --_----------=_110975836530121--

    --_----------=_110975836530120--

    Viele Grüsse (das gehört jetzt nicht mehr zur E-Mail, sondern
                  schliesst das Posting ab)

    Philipp