conrad: bild(er) aus email-quelltext lesen

hallo,

ich habe folgenden EMAIL quelltext:

######################################START

From  Sat Oct 14 01:09:42 2006

Received: from laptop ([80.64.176.29])
    (authenticated bits=0)
    by (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id k9DN9Zrx018501
    for ; Sat, 14 Oct 2006 01:09:37 +0200
Return-Receipt-To:
Reply-To:
From:
To:
Subject:
Date: Sat, 14 Oct 2006 01:09:28 +0200
Message-ID: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAA+2epvdNyQEqHeKPsiSlHjMKAAAAQAAAAULrSu1Sj00ivc2V+EvAFLwEAAAAA@>
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="----=_NextPart_000_014B_01C6EF2D.67524710"
X-Mailer:
Thread-Index: AcbvHKIC1GJAn5ldRY627i6jCrf+Kw==
X-MimeOLE: Produced By
Disposition-Notification-To:

This is a multi-part message in MIME format.

------=_NextPart_000_014B_01C6EF2D.67524710
Content-Type: multipart/alternative;
    boundary="----=_NextPart_001_014C_01C6EF2D.67524710"

------=_NextPart_001_014C_01C6EF2D.67524710
Content-Type: text/plain;
    charset="us-ascii"
Content-Transfer-Encoding: 7bit

------=_NextPart_001_014C_01C6EF2D.67524710--

------=_NextPart_000_014B_01C6EF2D.67524710
Content-Type: image/jpeg;
    name="nova.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="nova.jpg"

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+IMWElDQ19QUk9GSUxFAAEB
AAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IA

------=_NextPart_000_014B_01C6EF2D.67524710
Content-Type: image/gif;
    name="r7.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="r7.gif"

R0lGODlh5gCtAPcAAMZkN4M2J3slGO58dPZ9eU4oMvN8c4NDN+erqMhmQ3RyaElMLUsySDFFEYV5
eeh5aPeGg/+SjrpiMfz8+faKirljU9GPint7eoQnGW1oVrxZNPeKhstZR8VZNrdXKk9LT3YTD6hM

------=_NextPart_000_014B_01C6EF2D.67524710
Content-Type: image/png;
    name="anwendung4.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="anwendung4.png"

iVBORw0KGgoAAAANSUhEUgAAAfsAAAHFCAMAAADCJaA9AAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALrUExURf///9fTywgkaQAAAHdzWIh0UGhn

------=_NextPart_000_014B_01C6EF2D.67524710--

######################################ENDE

und ich habe folgendes autoresponder.php script:

######################################START
#!/usr/bin/php -q
<?

$fp = fopen('php://stdin','r');
$test = "";
$test2 = "";
$image = "";
while( !feof($fp) ) {
    $data=fgets($fp,4096);
    $data=chop($data);

$test .= "".$data."\n";

if ( !isset($headerEnd) )
    {

// bei der ersten Uebereinstimmung den Betreff dauerhaft speichern
        if (eregi("^Subject: ", $data) && !isset($subject)) {
            $subject = preg_split("'^Subject:'",$data);
            $subject = trim($subject[1]);
        }

// bei der ersten Uebereinstimmung den Betreff dauerhaft speichern
        if (eregi("^From: ", $data) && !isset($from)) {
            $from = preg_split("'^From:'",$data);
            $von = trim($from[1]);
        }

// bei der ersten Uebereinstimmung den Betreff dauerhaft speichern
        if(eregi("^Content-Type", $data))
        {
            //$image = preg_split("'^Content-Transfer-Encoding: base64'",$data);
            //$image .= "Content-Type was found\n\n";
            $image = $data;
            //$image = trim($from[1]);
        }

// Ist das Ende des Header erreicht?
        if ( $data == "" ) {
            $headerEnd = TRUE;
        }
    }
}
fclose($fp);

preg_match("/[\w-.]+@[\w-.]+[.][\w]+/", $von, $von);
$von = strtolower($von[0]);
//$content  = "Von: ".$von."\n";
//$content .= "Betreff: ".$subject."";

$content = "image: ".$image."\n\n\n\n";
$content .= $test;
?>
######################################ENDE

Betreff, From, To kann ich ohne probleme auslesen.

Wie kann ich aber die z..b. 3 Dateien (Bilder) auslesen?

bekomme es irgendwie nicht hin.
oder gibt es dafür evtl. schon ein script?

  1. Hallo Conrad,

    Content-Type: image/jpeg;
        name="nova.jpg"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
        filename="nova.jpg"

    Was sagt Dir das?

    Wie kann ich aber die z..b. 3 Dateien (Bilder) auslesen?
    bekomme es irgendwie nicht hin.
    oder gibt es dafür evtl. schon ein script?

    Wie komme ich wohl auf die Idee, dass Dir base64_decode() helfen könnte?

    Freundliche Grüße

    Vinzenz

    1. hi,

      das weiß ich ja auch, dass ich es noch decoden muß.

      aber wie bekomme ich mit MEINEM script den base64 code herraus?

      bzw. das automatisch bei allen bildern mit dem jeweiligen richtigen bildnamen?

      1. Hallo Conrad,

        das weiß ich ja auch, dass ich es noch decoden muß.
        aber wie bekomme ich mit MEINEM script den base64 code herraus?

        indem Du die entsprechenden Header analysierst, RFC2045 und verwandte RFCs könnten Dir dabei helfen, wenn Du das willst.

        Sind die folgenden Zeilen

        Content-Type: image/jpeg;
            name="nova.jpg"
        Content-Transfer-Encoding: base64
        Content-Disposition: attachment;
            filename="nova.jpg"

        wirklich so schwer zu lesen? Wenn ja, ...

        bzw. das automatisch bei allen bildern mit dem jeweiligen richtigen bildnamen?

        ... so empfehle ich Dir den Einsatz des PEAR-Pakets Mail_Mime, speziell Mail_mimeDecode::decode() kann die meiste Arbeit für Dich erledigen.

        Freundliche Grüße

        Vinzenz