sporadisches Problem mit Bildanhang bei sendmail

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sporadisches Problem mit Bildanhang bei sendmail

    Hallo!
    Ich habe sporadisch auftretende Probleme mit einem Mailscript. Als ich zum Test
    dieses Script auf meine Email Adresse hab kommen lassen funktionierte alles
    wunderbar; bei jemanden anders kommt folgendes raus:


    _____
    --grenzlinie
    Content-transfer-encoding: 7BIT

    Content-type: text/plain

    timo schmidt möchte einen Artikel beim Flohmarkt einstellen:


    schuhe gr. 67




    --grenzlinie
    Content-Type: application/octetstream;
    name=20040814c1_g01.jpg
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
    filename=20040814c1_g01.jpg

    /9j/4AAQSkZJRgABAQAAAQABAAD//gA8Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg

    SlBFRyB2NjIpLCBxdWFsaXR5ID0gMTAwCv/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
    _______________










    Wenn ich der Empfänger bin, gehts jedoch wie gewollt (Mail+Text+ Bild als Anhang)? (Client Problem?)


    Hier der relevante Code:



    PHP-Code:

    <?
    $grenze="grenzlinie";
    $name_des_bildes=$HTTP_POST_FILES['datei']['name'];
    $headers ="MIME-Version: 1.0\r\n";
    $headers.="From: $mailaddi\n";
    $headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n";
    $botschaft="\n--$grenze\n";
    $botschaft.="Content-transfer-encoding: 7BIT\r\n";
    $botschaft.="Content-type: text/plain\n\n";
    $botschaft.= "$Vorname $Nachname möchte einen Artikel beim KMTV Flohmarkt einstellen:\n\n
    $textbox
     \n";
    $botschaft.="\n\n";
    $botschaft.="\n--$grenze\n";
    $botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n";
    $botschaft.="Content-Transfer-Encoding: base64\n";
    $botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n";

    //Bild verkleinern falls wer nen 600 MB Pic postet
    $zeiger_auf_datei=fopen("$datei","rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize("$datei"));
    $bild="$datei";
    $new_x=100;
    $new_y=75;
    if (file_exists($bild) && is_file($bild)) {
        $imgInfo = getimagesize($bild);
        $img = '';
        switch ($imgInfo[2]) {
            case 1:
                $img = imagecreatefromgif($bild);
                break;
            case 2:
                $img = imagecreatefromjpeg($bild);
                break;
            case 3:
                $img = imagecreatefrompng($bild);
                break;
        }

        if (!empty($img)) {
            $imgX = $imgInfo[0];
            $imgY = $imgInfo[1];
            
            $im_new = @imagecreatetruecolor($new_x, $new_y)
            OR
            $im_new = imagecreate($new_x, $new_y);
            
            @imagecopyresampled($im_new, $img, 0, 0, 0, 0, $new_x, $new_y, $imgX, $imgY)
            OR
            imagecopyresized($im_new, $img, 0, 0, 0, 0, $new_x, $new_y, $imgX, $imgY); 

            imagejpeg($im_new, "$datei", 100); 
            imagedestroy($im_new); 
            imagedestroy($img);
        }
    }


    //
    $zeiger_auf_datei=fopen("$datei","rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize("$datei"));
    fclose($zeiger_auf_datei);
    $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
    $botschaft.=$inhalt_der_datei;
    $botschaft.="\n\n";
    $botschaft.="--$grenze";
    mail("e@mail.de","Flohmarkt",$botschaft,$headers);
    print 'jute, wurd verschickt!';
    ?>
    Wäre schön wenn wer nen Blick für sowas hat, da der Fehler bei mir nicht auftritt (koste es was es wolle). Dankeschön

  • #2
    Hallo nicker,

    Hatte auch das Problem, dass zum Teil mein Anhang als base64 Code dargestellt wurde, anstelle des Bildes. Jedoch lag bei mir das Problem beim Browser, hab ich festgestellt (IE 5.xx). Mit Opera gings dann anstandslos.

    Weiss aber nicht, was das mit einem Browser zu tun hatte!?

    Mein Script habe ich mit der Hilfe von Code-Schnipsel aus dieser Page und mit folgendem Zend-Artikel zusammengestellt:

    http://www.zend.com/zend/spotlight/s...emailpart1.php

    Schau mal da nach, unter z.B. 'Multipart MIME messages'.

    EDIT:

    So sollte meiner Meinung nach der Code beim angehängten Bild aussehen:
    (Anführungszeichen bei name="" nicht vergessen und am Ende natürlich die Boundary schliessen (--XXX--))

    --ZEND-12345

    Content-Type: image/jpeg; name="zendlogo.jpg";
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment
    <base64 encoded data for the zendlogo.jpg image>

    --ZEND-12345--


    Zuletzt geändert von kennyshell; 26.10.2004, 12:47.
    wissen ist macht; und ich bin dumm

    Kommentar


    • #3
      Hier noch mein Code, ist noch nicht ganz fertig, aber das wesentliche funktioniert.
      Angehängte Dateien
      wissen ist macht; und ich bin dumm

      Kommentar

      Lädt...
      X