Anhänge verseden mit PHP

Alles, was PHP betrifft, kann hier besprochen werden.

Anhänge verseden mit PHP

Postby System9 » 29. July 2015 13:41

Hallo,

habe den neuesten xampp server installiert, und sendmail.ini auch alles eingerichtet
jetzt möchte ich eine mail mit anhang verschicken.
Die Mail kommt zwar an, aber ohne Anhang.

Habt ihr eine Idee ?

Code: Select all

    $empfaenger = "meine@meil.com";
     
 
    $betreff = "E-Mail mit Anhang";
     
 
    $absender_name = "SBS";
     
 
    $absender_email = "SBS@sbs.com";
     
 
    $dateiname = "bild.JPG";
     
 
    $dateiname_mail = "bild.JPG";
     
    $boundary = md5(uniqid(time()));
     
    if (@file_exists($dateiname) == false) {
        echo 'Die Datei: '.$dateiname.' gibt es nicht auf den Server!';
    } else {
   
        $dateiinhalt = fread(fopen($dateiname,"r"), filesize($dateiname));
     
        $mail_header = "From: ".$absender_name." <".$absender_email."> \n";
        $mail_header .= "MIME-Version: 1.0 \n";
        $mail_header .= "Content-Type: multipart/mixed; boundary=".$boundary." \n";
        $mail_header .= "This is a multi-part message in MIME format \n";
        $mail_header .= "--".$boundary." \n";
        $mail_header .= "Content-Type: text/html \n";
        $mail_header .= "Content-Transfer-Encoding: 8bit \n";
   
        $mail_header .= "Das ist eine E-Mail mit Anhang! \n";

        $mail_header .= "--".$boundary." \n";
      $mail_header .= "Content-Type: image/jpg; name=".$dateiname_mail." \n";
        $mail_header .= "Content-Transfer-Encoding: base64 \n";
        $mail_header .= "Content-Disposition: attachment; filename=".$dateiname_mail." \n";
        $mail_header .= chunk_split(base64_encode($dateiinhalt));
        $mail_header .= "--".$boundary."--\n";

        @mail($empfaenger, $betreff,"", $mail_header) or die('Die Email konnte nicht versendet werden');
    }
System9
 
Posts: 1
Joined: 29. July 2015 13:38
Operating System: Windows 7

Re: Anhänge verseden mit PHP

Postby Nobbie » 29. July 2015 14:57

Emails mit Anhang zu verschicken erfordert sehr gute Kenntnisse des SMTP Protokolls resp. der Header Daten. Schon kleinste Fehler führen zu fehlerhafter Zustellung. Deswegen ist es keine gute Idee, die Daten selbst zusammenzufrickeln, verwende stattdessen den sog. "PHP Mailer". Das ist eine anerkannte PHP Class mit verständlicher API, die zudem auch noch den großen Vorteil besitzt, dass Du nicht auf die rudimentäre mail() Funktion angewiesen bist und auch nicht auf eine Umgehungslösung via sendmail.ini, sondern die notwendigen Serverdaten werden direkt in der Class angegeben und die Emails werden zuverlässig zugestellt.

Möglicherweise kann die sendmail von Xampp (ich weiß nicht einmal, was Du benutzt) auch gar keine Anhänge versenden.

Den PHP Mailer gibt es hier: http://sourceforge.net/projects/phpmailer/

Wenn Du einmal gelernt hast, wie die Klasse zu bedienen ist (da gibt es massenhaft Beispiele und Tutorials), willst Du mail() sowieso nicht mehr benutzen....
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 47 guests