Syntaxfehler im Header der E-Mail
Hallo,
nun habe ich endlich den Fehler gefunden. Pekka, Du hast mich auf die richtige Spur gebracht. Es lag an dem Script, dass den E-Mail-Header erzeugt. Dort war ein Syntaxfehler drin:
Wenn der Server den MIME-Typ nicht erkennen sollte und diesen so auch falsch in den E-Mail-Header schreibt, muss vor dem Erzeugen des Header der MIME-Typ manuell ermittelt und an den Header weitergeben werden:
Gruß Gabi
Hallo,
nun habe ich endlich den Fehler gefunden. Pekka, Du hast mich auf die richtige Spur gebracht. Es lag an dem Script, dass den E-Mail-Header erzeugt. Dort war ein Syntaxfehler drin:
PHP-Code:
// Falscher Code
$Header .= "\n--$Trenner";
$Header .= "\nContent-Type: ".$_FILES['Anhang']['type']."; name=\'".$_FILES['Anhang']['name']."\'";
$Header .= "\nContent-Transfer-Encoding: base64";
//Der Filename ist in Anführungszeichen gesetzt,
//das führt zu einer fehlerhaften Übermittlung der Datei
$Header .= "\nContent-Disposition: attachment; filename=\'".$_FILES['Anhang']['name']."\'";
//########################################
$Header .= "\n\n";
$Dateiinhalt = fread(fopen($anhang_mail, "r"), filesize($anhang_mail));
$Header .= chunk_split(base64_encode($Dateiinhalt));
PHP-Code:
// So geht es
//Die Information aus der Autoglobalen $_FILES muss zunächst in eine normale Variable $filename1 übertragen werden
$filename1=$_FILES['Anhang']['name'];
$Header. = "\n--$Trenner";
$Header .= "\nContent-Type:".$_FILES['Anhang']['type']."; name=$filename1";
$Header .= "\nContent-Transfer-Encoding: base64";
$Header .= "\nContent-Disposition:attachment";
//Als Filename die Variable $filename1, ohne Anführungszeichen einsetzen
filename=$filename1;
//#########################################
$Header .= "\n\n";
$Dateiinhalt = fread(fopen($anhang_mail, "r"), filesize($anhang_mail));
$Header .= chunk_split(base64_encode($Dateiinhalt));
PHP-Code:
// ZIP- und RAR-Archive manuell MIME- Typ erkennen und richtig zuweisen
$anhang_ext = strrchr($_FILES['Anhang']['name'],'.');
if(strtolower($anhang_ext)==".zip")
{
$anhang_typ="application/x-zip-compressed";
}
if(strtolower($anhang_ext)==".rar")
{
$anhang_typ="application/x-rar-compressed";
}
//E-Mail-Header
$Trenner = md5(uniqid(time()));
$Header = "From: $Email";
$Header .= "\n";
$Header .= "MIME-Version:1.0";
$Header .= "\r\n";
$Header .= "Content-Type:multipart/mixed; boundary=$Trenner";
$Header .= "\n\n";
$Header .= "This is a multi-part message in MIME format";
$Header .= "\n";
$Header .= "--$Trenner";
$Header .= "\n";
$Header .= "Content-Type:text/html";
$Header .= "\n";
$Header .= "Content-Transfer-Encoding: 8bit";
$Header .= "\n\n";
$Header .= $mein_text;
//Anhang mit MIME-Typ an E-Mail-Header übergeben
$filename1=$_FILES['Anhang']['name'];
$Header .= "\n--$Trenner";
$Header .= "\nContent-Type:$anhang_typ; name=$filename1";
$Header .= "\nContent-Transfer-Encoding: base64";
$Header .= "\nContent-Disposition:attachment";
filename=$filename1;
$Header .= "\n\n";
$Dateiinhalt = fread(fopen($anhang_mail, "r"), filesize($anhang_mail));
$Header .= chunk_split(base64_encode($Dateiinhalt));
//Ende Anhang
Kommentar