Bruno Pisarek: HTML-eMail mit Bild senden

hallo liebe leute,

ich muss eine html-email mit integriertem bild senden.
das klappt auch wunderbar, aber das bild wird sowohl in der email, als auch als anhang (büroklammer) angezeigt.

gewollt ist aber NUR in der mail - nicht als anhang!

kann mir jemand helfen?

viele grüße,
bruno

-----codeauszug---schnipp---schnapp------

$mimeprog = '/usr/bin/mimencode';
$mailprog = '/usr/sbin/sendmail';
$attachedFile = 'mops.gif';
$attachedName = 'mops.gif';
$boundary = "----=_NextPart";
$recipient = 'adresse@weissdergeierwo.de';

@attachedFile = $mimeprog $attachedFile $attachedName;

open (MAIL, "|$mailprog -t");
print MAIL "From: absender@irgendwas.de\n";
print MAIL "To: $recipient\n";
print MAIL "Subject: kuckuck\n";
print MAIL "Content-Type: multipart/mixed;\n";
print MAIL "        boundary="$boundary"\n\n";
print MAIL "--$boundary\n";
print MAIL "Content-Type: text/html; charset="iso-8859-1"\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";

print MAIL "<b>Hier der eigentliche Inhalt...</b>\n";

print MAIL "--$boundary\n";
print MAIL "Content-Type: image/gif\n";
print MAIL "        name="$attachedName"\n";
print MAIL "Content-Transfer-Encoding: base64\n";
print MAIL "Content-Disposition: inline; filename="$attachedName"\n\n";
print MAIL @attachedFile;
print MAIL "\n\n";
close MAIL;

  1. ich muss eine html-email mit integriertem bild senden.
    das klappt auch wunderbar, aber das bild wird sowohl in der email, als auch als anhang (büroklammer) angezeigt.

    gewollt ist aber NUR in der mail - nicht als anhang!

    Benutzt du Outlook oder Outlook Express als Email-Programm? Die zeigen Bilder als Attachments nämlich automatisch an, das hat mit dem Script nichts zu tun. Probier mal, dein Email in einem anderen Reader zu öffnen.

    Grüße,
    Crunch

    1. hi crunch,

      Benutzt du Outlook oder Outlook Express als Email-Programm? Die zeigen Bilder als Attachments nämlich automatisch an, das hat mit dem Script nichts zu tun. Probier mal, dein Email in einem anderen Reader zu öffnen.

      das ist leider nicht ganz richtig :)

      wenn ich MIR SELBER mit outlook-express eine mail schreibe und in diese mail ein bild einfüge, dann wird das bild beim empfang ja auch nicht als anhang angezeigt, sondern NUR als solches IN DER MAIL.

      totzdem danke für deine hilfe!

      wer kann noch weiterhelfen?

      viele grüße,
      bruno

      1. wenn ich MIR SELBER mit outlook-express eine mail schreibe und in diese mail ein bild einfüge, dann wird das bild beim empfang ja auch nicht als anhang angezeigt, sondern NUR als solches IN DER MAIL.

        Hi,
        verstehe, was du meinst. Ich hab das mal selbst ausprobiert, bei der Version, bei der das Bild nur im Mail selbst gezeigt wird, schreibt Outlook Express im Quelltext folgendes:

        im normalen HTML-Teil
        <IMG align=3Dbaseline alt=3D"" border=3D0 hspace=3D0=20
        src=3D"cid:003001c10f91$50727f00$aa01a8c0@meinedomain.at">

        und dann :

        Content-Type: image/gif;
         name="datei.gif"
        Content-Transfer-Encoding: base64
        Content-ID: 003001c10f91$50727f00$aa01a8c0@meinedomain.at
        --- BASE64-Teil ----

        Vielleicht liegt es daran, dass du "Content-Disposition: inline" nimmst, es wird dann wohl als Attachment behandelt? Mach das mal in deinem Script so wie Outlook Express. Ich weiß aber nicht, ob das irgendeinem Standard entspricht, da müsste man noch die ensprechende RFC konsultieren.

        Grüße,
        Crunch

  2. hallo liebe leute,

    ich muss eine html-email mit integriertem bild senden.
    das klappt auch wunderbar, aber das bild wird sowohl in der email, als auch als anhang (büroklammer) angezeigt.

    gewollt ist aber NUR in der mail - nicht als anhang!

    kann mir jemand helfen?

    shau dir die specsfür MIME mal an

    viele grüße,
    bruno

    -----codeauszug---schnipp---schnapp------

    $mimeprog = '/usr/bin/mimencode';
    $mailprog = '/usr/sbin/sendmail';
    $attachedFile = 'mops.gif';
    $attachedName = 'mops.gif';
    $boundary = "----=_NextPart";
    $recipient = 'adresse@weissdergeierwo.de';

    @attachedFile = $mimeprog $attachedFile $attachedName;

    open (MAIL, "|$mailprog -t");
    print MAIL "From: absender@irgendwas.de\n";
    print MAIL "To: $recipient\n";
    print MAIL "Subject: kuckuck\n";

    print MAIL "MIME-Version: 1.0\n";

    print MAIL "Content-Type: multipart/mixed;\n";

    .......................................^^^^^^^^^  -> falsch

    dieser teil nur für den HTNEL teil, denn selbst wenn du HTML sendest gehört ein Plainteil rein!!!!!

    print MAIL "Content-Type: multipart/related;\n";

    print MAIL "        boundary="$boundary"\n\n";
    print MAIL "--$boundary\n";
    print MAIL "Content-Type: text/html; charset="iso-8859-1"\n";
    print MAIL "Content-Transfer-Encoding: 7bit\n\n";

    print MAIL "<b>Hier der eigentliche Inhalt...</b>\n";

    print MAIL "--$boundary\n";
    print MAIL "Content-Type: image/gif\n";
    print MAIL "        name="$attachedName"\n";
    print MAIL "Content-Transfer-Encoding: base64\n";
    print MAIL "Content-Disposition: inline; filename="$attachedName"\n\n";
    print MAIL @attachedFile;
    print MAIL "\n\n";
    close MAIL;

    Hier siehst du den kompletten text
    From: sender
    Date: Mon, 18 Jun 2001 21:56:30 +0200
    To: empfeanger
    CC: kopieempfeanger
    Subject: Überschrift
    MIME-Version: 1.0   // sobald du HTML-Mail oder attachement verschickst
    Content-Type: multipart/mixed;  // sobald du ein Attachment hast
     boundary="mixed_trenner--mail_attachement"  // trennerspezifikation für attachment

    This is a multi-part message in MIME format.  // Den satz bekommt der user zu sehen, wenn sein Mailclient kein MIME kann

    --mixed_trenner--mail_attachement  // Abgrenzung der Email vom header (beachte -- am anfang)
    Content-Type: multipart/alternative; // sobald du eine HTMLAlternative hast
     boundary="alternative_trenner--Plain_Html"  // trennerspezifikation für PLAINTEXT -- HTML

    --alternative_trenner--Plain_Html  // Abgrenzung der PLAIN von HTML
    Content-Type: text/plain; charset=us-ascii  // Ab hier PLAINTEXT
    Content-Transfer-Encoding: quoted-printable  //  Kodierungsform

    Das hier ist dein Plaintext

    --alternative_trenner--Plain_Html  // Abgrenzung der PLAIN von HTML
    Content-Type: multipart/related;  // sobald du ein Bild im HTMLTEIL der Mail hast
     boundary="related_trenner--Html_Images"

    --related_trenner--Html_Images   // Abgrenzung der HTMLQUELLCODE vom z.B BGbild
    Content-Type: text/html; charset=us-ascii // Ab hier HTMLQUELLCODE
    Content-Transfer-Encoding: 7bit    //  Kodierungsform

    <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
    <html>
    <body background="cid:ID_DES_BG_BILDES">

    <h1>Halli, hallo</h1>
    <span style="font: bold 20px Verdana; color:red;">DAS IST DEIN PLAINTEXT
    IN DER HTML-FASSUNG.</span>
    </body>
    </html>

    --related_trenner--Html_Images  // Abgrenzung der HTMLQUELLCODE vom z.B BGbild
    Content-Type: image/jpeg   // Ab hier das BGBILD
    Content-ID: <ID_DES_BG_BILDES>
    Content-Transfer-Encoding: base64
    Content-Disposition: inline; filename="mailbg.jpeg"

    /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUG
    BgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYH
    CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAAR
    CAAFAlgDASEAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAECAwQJ/8QAORAAAAMFAwgH
    BwUAAAAAAAAAAAECBQYHEdEDBCEVFjFBVpSkpUZXg4SVotISJlNUgqGjIjIzgYX/xAAUAQEA
    AAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A9/AA
    ItEoIsUz/sZWlnYHOdjP6gGFrY3I/wB11n9Y57S7Msz/AFM+faGA5ra5sQzMlMqfbHQc1pcH
    dx9piT7c6AOW3ZrrGU1O9PvJ0HMtlugZmSnZn3pVAGS2Q5Rz9p1J97VQYrYzi63Rn3xVAGK2
    I4Jzm5vGqoMlsKHplM3KI+/KoAyWwYc63GI+/roM1sCG05G4hb+qgCFO/DIimTg8wXQQbvQy
    M55g8wXQBK3ehgZ4w/n/AKK/SFm7C/q+LxFfpAGbsL+r4vEV+kGbsL+r4vEV+kAZuwv6vi8R
    X6QE7sL54Q/5iv0gLzdhlsDzBVAZuwy2B5gugAzdhlsDzBdA8gQz1ODzBdADyDDPYEvEF0DS
    78MjKZuDzBdADzdhlsDzBdAZvw1LQ4fMFUANLvw1M8HE49VBeb8N9hS39VAATAhuXQUt/XQN
    LBhxPBxuPXQBeQIc7Dlv66B5Ch3sQW/KoApLCh6ZYOUW/KoGTDh8Why+OVQBSWG4E8HMLfVU
    FEw3BI55mlvqqAGTFcKZe5vGqoLyI4Wx/GqoAeR3ELohxqqC8jONsjxiqAGTHceZe6fGKoLy
    O5JdFOMVQA8lOWXRXi1UFZJc4sc1y3pVAFZLdDZnilUDSzHRng7XFKoAomY6ZaHc4k6DazZr
    q6nd1fMnQBZM92C0MDiDoNbO4O2ehhSw+YOgCiuDuloYn5zoNE3JgkUyY+r4x0AapujEkUmT
    q+MdBpZ3VkYSZku1MBZXVkljk78pi03ZmSwuH5DAWiwZ88Ln5xomxuUyIrr5wFlZXQtF28ws
    rK7yIysfMApKLEz/AIvuLJFkWiz+4BoJE5En7iiIiOREAYAAAAAAf//Z

    --related_trenner--Html_Images-- // Abgrenzung der HTMLQUELLCODE vom BGbild schließen (-- am ende)

    --alternative_trenner--Plain_Html-- // Abgrenzung der PLAINTEXT vom HTMLTEIL schließen (-- am ende)

    --mixed_trenner--mail_attachement // Abgrenzung des TEXTTEIL vom ATTACHMENT
    Content-Type: image/gif;
     name="closer.gif"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachement; filename="closer.gif"

    R0lGODlhEAAQAOUuAAUGBTSMLpLWljDQJG/KbWzlXFPQS8npy4rihhJODnaIdqbbqETcOFbu
    U4TJhIPtfDGzL0THQGPKZuPs5K/esgImAoDwa3zUdEhSRkrRPaD6kGDcVXzWe0ytQ7rlu53Y
    oDJqKmu+Zkp2SiYtIypCJoe4iFGaSWJiYqb5k4r1emZ8ZKH4ig4yDmvZZe3y7kW9RRYeFjZa
    MjnGMkrqQbrYuj5+OmbbYWPzUna2dggUCFJiUorainLkaEaONlvKWAAAACH5BAEAAD8ALAAA
    AAAQABAAAAbQwJ/wNzl4KMjDZDh0GSmLqJTialI+H4F2m3Usfx5OSVHaCsYlyY4oIThUJ8du
    5zipHITXgfLycUIYOhccOhghFz4QHBwRET4tJiMiIiMdLT4RMn2NBjY8NTk5ATwtBo0QBhkG
    GzwpJgAAJik8G6kQNhmsKSEACSw5F7MbDB0IDAUWFzAVLQQAIw8WBTI4B8cWJAAdGiivMRY3
    MjQ/DzM9oisoKBogOR0zBEITNgMZFiv4KxYZAz5fPy4eNLhhIUUKcDM4/BtyQOCMGQ0eeGAS
    BAA7
    --mixed_trenner--mail_attachement-- // Abgrenzung des TEXTTEIL vom ATTACHMENT schließen

    Ließ es und verstehe es oder ließ die RFC's

    Bye Ed X