Dorian Gray: PDF-Anhang versenden

Hallo an alle!
Ich habe folgenden, noch sehr einfachen Code zum versenden von E-Mails mit PDF-Anhang mit PHP:

<?php
function attach($to, $from, $subject, $message, $file)
{
    $mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1));
    $data = chunk_split(base64_encode(file_get_contents($file)));
    $header = "To: ".$to."\r\n";
    $header.= "From: ".$from."\r\n";
    $header.= "MIME-Version: 1.0\r\n";
    $header.= "Content-Type: multipart/mixed;\r\n";
    $header.= " boundary="".$mime_boundary.""\r\n";

$content = "This is a multi-part message in MIME format.\r\n\r\n";
    $content.= "--".$mime_boundary."\r\n";
    $content.= "Content-Type: text/plain; charset="iso-8859-1"\r\n";
    $content.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $content.= $message."\r\n";
    $content.= "--".$mime_boundary."\r\n";
    $content.= "Content-Disposition: attachment;\r\n";
    $content.= "Content-Type: Application/Octet-Stream; name="".$file.""\r\n";
    $content.= "Content-Transfer-Encoding: base64\r\n\r\n";
    $content.= $data."\r\n";
    $content.= "--" . $mime_boundary . "\r\n";
    if(@mail($to, $subject, $content, $header))
    {
        return TRUE;
    }
    echo "Fehler: " . $php_errormsg;
    return FALSE;
}
$to = 'empfaenger@empfaenger.de';
$from = 'ich@ich.de';
$subject = 'Test mit PDF';
$message = 'Diese Mail enthält einen wichtigen Anhang!';
$file = 'test.pdf';
ini_set('track_errors', 'On');
attach($to, $from, $subject, $message, $file);
?>

Das Script funktioniert zwar, allerdings wird zum PDF noch eine leere Textdatei angehängt, sie heißt „ATT000061.txt“. Diese Textdatei will ich nicht. Kann mir jemand sagen, was ich im Script verändern muss, damit diese Text_Datei nicht mehr mitgesendet wird? Schonmal danke im Voraus!

  1. Hallo,

    ...

    $content.= "--".$mime_boundary."\r\n";
        $content.= "Content-Disposition: attachment;\r\n";
        $content.= "Content-Type: Application/Octet-Stream; name="".$file.""\r\n";
        $content.= "Content-Transfer-Encoding: base64\r\n\r\n";
        $content.= $data."\r\n";
        $content.= "--" . $mime_boundary . "\r\n";

    Eine Multipart-Mail endet mit: "--boundary--". Beachte die "--" _nach_ dem boundary-String!

    Das Script funktioniert zwar, allerdings wird zum PDF noch eine leere Textdatei angehängt, sie heißt „ATT000061.txt“. Diese Textdatei will ich nicht. Kann mir jemand sagen, was ich im Script verändern muss, damit diese Text_Datei nicht mehr mitgesendet wird?

    Dein Mail-Programm erwartet nach dem Separator "--boundary" noch einen Part, den es dann als ATT000061.txt interpretiert. Wenn Du diesen Anhang mal öffnest, sollte er leer sein.

    viele Grüße

    Axel

    1. Danke vielmals!!!
      Jetzt funktioniert es ohne Text-Datei!