ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
454
454
EMPFEHLEN
-
Hallo,
ich habe ein Skript, dass es mir erlaubt, Dateien als Anhang einer eMail mitzuschicken.
Nun werden die Dateien zwar mitgeschickt, allerdings sind sie meist kleiner als das Original und lassen sich auch nicht öffnen. Bilder lassen sich zum Beispiel nicht anzeigen.
Hier der Code:
Kann es evtl daran liegen, dass ich die Datei erst hochladen muss, bevor ich sie einer eMail anfüge? In meinem Beispiel wird die Datei nämlich im Selben Schritt mit dem Versand der eMail hochgeladen.PHP-Code:$contenttypes = array(
"text/plain" => array("encoding"=>"8bit" ,"info"=>"purer Text"),
"text/html" => array("encoding"=>"8bit" ,"info"=>"HTML-Dokument"),
"image/gif" => array("encoding"=>"base64","info"=>"Bild: GIF"),
"image/jpeg" => array("encoding"=>"base64","info"=>"Bild: JPEG"),
"image/png" => array("encoding"=>"base64","info"=>"Bild: PNG"),
"application/x-zip-compressed" => array("encoding"=>"base64","info"=>"Komprimiert: ZIP"),
"application/x-gzip" => array("encoding"=>"base64","info"=>"Komprimiert: GZ"),
"application/x-tar" => array("encoding"=>"base64","info"=>"Komprimiert: TAR")
);
$message = $_POST['message'];
$subject = $_POST['subject'];
$mail_header = "From: system@XXXX.de";
/* Wenn eine Datei als Anhang ausgewaelt wurde... */
if($_FILES['datei']['tmp_name'] != "") {
$dateiname = $_FILES['datei']['name'];
$anhang_content_type = $_FILES['datei']['type'];
/* Lese die temporaere Datei, die der Benutzer hochgeladen hat aus */
$datei_content = fread(fopen($_FILES['datei']['tmp_name'],"r"),filesize($_FILES['datei']['tmp_name']));
/* Codiere Datei ins BASE64-Format, falls noetig */
if($contenttypes[$anhang_content_type][encoding]=="base64") $datei_content = chunk_split(base64_encode($datei_content));
else $datei_content = $datei_content;
/* Generiere einen Boundary */
$boundary = strtoupper(md5(uniqid(time())));
/* Beginne den Mail-Header mit MIME-Mail-Header */
/* (siehe http://www.php3-forum.de/mime_mail.htm) */
$mail_header .= "\nMIME-Version: 1.0";
$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
/* Hier faengt der normale Mail-Text an */
$mail_header .= "\n--$boundary";
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n$message";
/* Hier faengt der Datei-Anhang an */
$mail_header .= "\n--$boundary";
$mail_header .= "\nContent-Type: $anhang_content_type; name=\"$dateiname\"";
/* Lese aus dem Array $contenttypes die Codierung fuer den MIME-Typ des Anhangs aus */
$mail_header .= "\nContent-Disposition: attachment; filename=\"$dateiname\"";
$mail_header .= "\n\n$datei_content";
/* Gibt das Ende der eMail aus */
$mail_header .= "\n--$boundary--";
} else {
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n".$message;
}
mail($emp,$subject,"",$mail_header);
Mfg Vercetti
-
Prinzipiell startet die Verarbeitung des Skriptes erst dann, wenn die Anfrage komplett ist, also wenn die Datei komplett hochgeladen wurde. Also kannst du das Skript so lassen wie es ist.
Gib die hochgeladenen Dateien doch mal zusätzlich aus.Markus Wulftange
-
Hi,
ich habe das mal mit einer Bilddatei getestet. Tatsächlich konnte sie nicht ausgegeben bzw als Bild dargestellt werden.
Dem hat erst die simple copy()-Funktion Abhilfe geschafft. Und zwar, indem ich die Temporärdatei dauerhaft auf den Server gespeichert habe. Das ist doch aber nicht Sinn der Sache oder?
Muss man eine Anhangsdatei denn auf dem Server speichern?
Die temporären Dateien konnten nie ausgegeben werden und wurden auch als Anhang defekt verschickt.
mfg Vercetti
Ähnliche Themen
-
Fehler beim Versenden von Emails
Von Luzie im Forum PHPAntworten: 7Letzter Beitrag: 19.06.08, 11:44 -
E-Mails mit Anhang verschicken.
Von aKraus im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 24.05.07, 10:18 -
Probleme beim versenden von Mails mit dem Hamster
Von ThePredator im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 30.04.06, 16:35 -
Fehler beim Senden von Mails mit Outlook
Von TimN im Forum Internet, DSL & FlatrateAntworten: 2Letzter Beitrag: 28.03.06, 16:35 -
Probleme beim versenden von E-Mails
Von vendy im Forum PHPAntworten: 3Letzter Beitrag: 17.12.04, 16:21





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren