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

Diskutiere mit über: PHP mail() , unerwünschte 0kb Datei im Anhang (ATT01234.txt) im Web-Programmierung Forum

  1. sevY

    sevY Thread Starter Gast

    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
     
    Zuletzt von einem Moderator bearbeitet: 03.03.2005
  2. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    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"
     
    Zuletzt bearbeitet: 03.03.2005
  3. sevY

    sevY Thread Starter Gast

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

    Yves
     
  4. sevY

    sevY Thread Starter Gast

    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?
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.035
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    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.
     
    Zuletzt bearbeitet: 03.03.2005
  6. sevY

    sevY Thread Starter Gast

    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
     
  7. databass

    databass MacUser Mitglied

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

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

    [TB]Lucky MacUser Mitglied

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

    - björn
     
Die Seite wird geladen...
Ähnliche Themen - PHP mail() unerwünschte Forum Datum
Email mit vordefinierter Antwortvorlage zum schnellen beantworten der Email Web-Programmierung 25.01.2011
mail Funktion unter PHP 4.4.9 Web-Programmierung 10.09.2008
PHP - Mail() benutzen mit XAMP und ISP Web-Programmierung 14.05.2008
php mail() sicher machen Web-Programmierung 31.01.2007
PHP: Inhalt eines einzigen Textfeldes per Mail verschicken Web-Programmierung 05.01.2007

Diese Seite empfehlen

Benutzerdefinierte Suche