Attachment - Problem

e-arty

Mitglied
Hallo Forum,

wieder einmal melde ich mich mit folgendem Problem. Ich hab hier ein Script, das ich von einem Freund bekommen hab. Es dient dazu Emails mit Alternativetext und Anhang zu versenden. Soweit klappt das auch, nur wenn ich mit Anhang versende, bekomm ich keine vernüftige Endung zustande, wenn ich eine Variable zum auslesen angebe.
Vielleicht kennt sich jemand damit aus. Bin da ein bisschen unerfahren, was dieses Header-Dingens angeht. Danke.

PHP:
<?php
function validate_email($email){ 
if ( !eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $email) ) { 
return false; 
} else { 
return true; 
} 
} 
function send_MIME_email( $email ){ 
if( empty($email["recip"]) || empty($email["sender"]) || empty($email["subject"]) ) { 
echo "Empfänger, Absender und/oder Betreff wurde(n) nicht eingegeben!";
return false; 
} 
if( !validate_email($email["recip"]) || !validate_email($email["sender"]) ) { 
echo "Die Email Adressen von Sender und/oder Empfänger ist ungültig!"; 
return false; 
} 
if( empty($email["content"]["plain"]) && empty($email["content"]["html"]) ) { 
echo  "Es wurde weder Text-Inhalt noch HTML-Inhalt angegeben!";
return false; 
} 
$boundary = strtoupper(md5(uniqid(time()))); 
$mail_header = "From: ".$email["sender"]; 
$mail_header .= "\nMIME-Version: 1.0"; 
$mail_header .= "\nContent-Type: multipart/alternative; boundary=".$boundary; 
$mail_header .= "\n\nThis is a multi-part message in MIME format"; 
if( !empty($email["content"]["plain"]) ){ 
$mail_header .= "\n--".$boundary; 
$mail_header .= "\nContent-Type: text/plain"; 
$mail_header .= "\nContent-Transfer-Encoding: 8bit"; 
$mail_header .= "\n\n".$email["content"]["plain"]; 
} 
if( !empty($email["content"]["html"]) ){ 
$mail_header .= "\n--".$boundary; 
$mail_header .= "\nContent-Type: text/html"; 
$mail_header .= "\nContent-Transfer-Encoding: 8bit"; 
$mail_header .= "\n\n".$email["content"]["html"]; 
}
if( !empty($email["attachment"]) ){ 
$file = $email["attachment"]; 
$filename = basename( $file ); 
if( @is_file($file) && @is_readable($file) ){ 
$fp = @fopen( $file, "rb" ); 
if( $fp ){ 
$buffer = fread( $fp, filesize($file) ); 
$buffer = base64_encode( $buffer ); 
$buffer = chunk_split( $buffer, 72 ); 
fclose($fp); 
$mail_header .= "\n--".$boundary; 
$mail_header .= "\nContent-Type: application/octet-stream; name=\"".$filename."\n\n\"";
$mail_header .= "\nContent-Transfer-Encoding: base64"; 
$mail_header .= "\nContent-Disposition: attachment; filename=\"".$filename."\n\n\""; 
$mail_header .= "\n\n".$buffer; 
} else { 
echo "Die Datei konnte nicht geöffnet werden!"; 
} 
} 
}  
if( !@mail($email["recip"],$email["subject"],"",$mail_header) ) { 
return false; 
} else { 
return true; 
} 
} 
$MIME_email = array(); 
$MIME_email["recip"] = "$empfaenger"; 
$MIME_email["sender"] = "$absend"; 
$MIME_email["subject"] = "$betreff"; 
$MIME_email["content"] = array(); 
$MIME_email["content"]["plain"] = "$msg1"; 
$MIME_email["content"]["html"] = "<HTML><HEAD><TITLE>Newsletter</TITLE></HEAD>" 
."<BODY bgcolor='#ffffff' text='#000000'>$msg</BODY></HTML>"; 
$MIME_email["attachment"] = "$datei"; 
if( !send_MIME_email( $MIME_email ) ){ 
echo "Email konnte nicht versendet werden!<br><br>";
} else { 
echo "Email wurde versandt!<br><br>";
} 
?>

Variable:
PHP:
<input type=file name=datei>
 
*Nochmal anschieb*
--------------------------------------------------------------------------------------
Hab mir das mal ausgeben lassen. Vielleicht kann mir jetzt jemand helfen.

PHP:
Array
(
    [datei] => Array
        (
            [name] => test.txt
            [type] => text/plain
            [tmp_name] => /srv/www/bla/blubb/phptmp/phpKbeUjX //<--Diese Endung wird übertragen.
            [error] => 0
            [size] => 200
        )

)

Und genau da liegt mein Problem, das er mir immer nur den Tempname übermittelt und nicht den eigentlichen Namen der Datei. Hier wäre es jetzt phpKbeUjX .
 
Zuletzt bearbeitet:
Zurück