PHP mail() , unerwünschte 0kb Datei im Anhang (ATT01234.txt)

  1. sevY

    sevY Thread Starter

    Hi zusammen,


    ich konkateniere mir wie folgt einen header um diese per PHP mittels mail() zu versenden:

    PHP:
    function encodeImage($image)
            {
            
    $handler=fopen($image,"r");
            
    $binary=fread($handler,filesize($image));
            
    fclose($handler);
            
    $chunk=chunk_split(base64_encode($binary));
            return 
    $chunk;
            }
            
        
    $boundary=md5(uniqid(time()));
        
    $header="From:".utf8_decode($_POST['fromname'])."<".utf8_decode($_POST['fromaddress']).">\r\n";
        
    $header.="Reply-To: ".utf8_decode($_POST['fromaddress'])."\r\n"
        
    $header.="X-Mailer: PHP/" .phpversion(). "\r\n";          
        
    $header.="X-Sender-IP: ".$_SERVER["REMOTE_ADDR"]."\r\n";
        
    $header.="MIME-Version: 1.0\r\n";
        
    $header.="Content-Type: multipart/related; boundary=$boundary\r\n";
        
    $header.="--$boundary\r\n";   
        
    $header.="Content-Type: text/html; charset=iso-8859-1\r\n";
        
    $header.="Content-Transfer-Encoding: 8bit\r\n";
        
    $message="--$boundary\r\n";
        
        
    $message.=$htmlcode."\r\n";
        
        
    $message.="--$boundary\r\n";
        
    $message.="Content-Type: image/jpeg; \r\n name=ecard.jpg\r\n";
        
    $message.="Content-Transfer-Encoding: base64\r\n";
        
    $message.="Content-ID: <ecard.jpg>\r\n";
        
    $message.="Content-Disposition:inline;filename=ecard.jpg\r\n\r\n";
        
    $message.=encodeImage('ecard/erfurt'.utf8_decode($_POST['ecardID']).'.jpg')."\r\n\r\n";
        
    $message.="--$boundary\r\n\r\n";
        
        if(
    mail(utf8_decode($_POST['toname'])."<".utf8_decode($_POST['toaddress']).">",utf8_decode($_POST['fromname'])." hat Ihnen eine eCard geschrieben!",$message,$header))
            {
            echo 
    true;
            }


    Soweit auch alles in Ordnung, jedoch sieht man unter Outlook Express Windows immer eine leere Datei im Anhang mit Name wie ATT00230.txt

    Scheinbar scheint irgendwas im header auf keinen der beiden definierten Mime-Types zu passen…

    Hat jemand einen Tip?


    Viele Grüße

    Yves
     
    sevY, 03.03.2005
  2. simusch

    simuschMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    hi

    kann es daran liegen, dass du in der ersten und zweiten zeile mit $message= das .= vergessen hast?

    PHP:
    $message.="--$boundary\r\n"

    $message.=$htmlcode."\r\n"

    $message.="--$boundary\r\n"
     
    simusch, 03.03.2005
  3. sevY

    sevY Thread Starter

    Danke, hab ich korrigiert. Daran lag es aber nicht… hatte grad nur die alte Version aus der Datei kopiert…

    Yves
     
    sevY, 03.03.2005
  4. sevY

    sevY Thread Starter

    Ich hab mal PHPmailer von Sourceforge genommen.
    Damit klappt es. Hab keine Lust, da jetzt zu frickeln…

    Mal nebenbei… stimmt es, das viele MailBrowser mit multipart/alternative Types, die zwischen text/html, text/plain und image/jpeg switchen, Probleme haben?
    Also so, das man praktisch alles am besten als HTML senden und dann ans Ende einfach unformatiert „plain text“ anhängt, ohne dafür einen Content-Type zu definieren?
     
    sevY, 03.03.2005
  5. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    Zumindest werden Dich viele Virenfilter im Zweifelsfall eher fallenlassen, bei vielen Firmen kommen schon nur noch Textmails durch! multipart/alternative ist eine Sicherheitslücke, weil hiermit Lazycode nachgeladen werden kann.

    Zu Deinem Ursprungsproblem: Ich habe in zwei Skripten ein ähnliches Phänomen und kenne die Lösung auch noch nicht. Da die mails von einem cron-Script an mich gehen, war mir das attachement nat. egal ;) Trotzdem wüßte ich auch gern was da faul ist.
     
    wegus, 03.03.2005
  6. sevY

    sevY Thread Starter

    Ok, Danke für die Info.

    Was das Problem angeht… am besten mal den eigenen Code mit dem PHPmailer Code vergleichen… Stück für Stück… naja… ich nutze jetzt standardmäßig PHPmailer… ein geniales Script.
    Einfach ein neues Objekt instanzieren und diesem dann die gewünschten Eigenschaften mitgeben, die Mail am Ende ist ausnahmslos kompatibel!

    Viele Grüße

    Yves
     
    sevY, 03.03.2005
  7. databass

    databassMacUser Mitglied

    Mitglied seit:
    21.06.2004
    Beiträge:
    5
    Zustimmungen:
    0
    muss der letzte boundary nicht mit -- enden?

    $message.="--$boundary--\r\n\r\n";
     
    databass, 03.03.2005
  8. [TB]Lucky

    [TB]LuckyMacUser Mitglied

    Mitglied seit:
    17.11.2003
    Beiträge:
    769
    Zustimmungen:
    0
    Code:
     $chunk=chunk_split(base64_encode($binary  ));
    Entferne mal das Leerzeichen hinter $binary, vielleicht codiert der das versehentlich mit?

    - björn
     
    [TB]Lucky, 03.03.2005
Die Seite wird geladen...
Ähnliche Themen - PHP mail() unerwünschte
  1. Nielz
    Antworten:
    3
    Aufrufe:
    1.585
  2. LMigo
    Antworten:
    6
    Aufrufe:
    796
  3. race
    Antworten:
    17
    Aufrufe:
    2.265
    getraenkemarkt
    05.06.2008
  4. asylum
    Antworten:
    5
    Aufrufe:
    2.569
  5. Robbat
    Antworten:
    7
    Aufrufe:
    571