Hallo,
leider funktionieren bei puretec die Klassen phpmailer nicht.
Deshalb versuche ich mit einer anderen Funktion E-Mails per PHP-Skript zu versenden.
Mit einem Anhang klappt das auch wunderbar.
Bei zwei Anhängen hängt er entweder nur eines an oder hängt leere Textdateien mit an.
Der Aufruf:
Die Funktion:
Ersetze ich (*) durch (**) oder lasse (**) weg dann gibt er nur die PDF-Datei aus.
Bei nur einer Datei funktioniert es wunderbar!
Vielen Dank im Vorraus für eure Hilfe.
leider funktionieren bei puretec die Klassen phpmailer nicht.
Deshalb versuche ich mit einer anderen Funktion E-Mails per PHP-Skript zu versenden.
Mit einem Anhang klappt das auch wunderbar.
Bei zwei Anhängen hängt er entweder nur eines an oder hängt leere Textdateien mit an.
Der Aufruf:
PHP:
$datei[1] = "rechnungen/LS_MjAyMDAwMzg2Nw==.pdf";
$datei[2] = "http://www.tutorials.de/forum/images/logo3.png";
$dateiname[1] = "123.pdf";
$dateiname[2] = "456.png";
MailVersenden("info@gwittmann.de", '', '', "info@gwittmann.de", "Test", "Ich will\r\n\r\ntesten!!\r\n\r\n\"ENDE\"", $datei, $dateiname);
Die Funktion:
PHP:
function MailVersenden($an, $cc, $bcc, $from, $betreff, $text, $datei, $dateiname) {
$email_subject = $betreff; // The Subject of the email
// $email_to = ""; // Who the email is too
$headers = "From: ".$from;
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
nl2br($text) . "\n\n";
if (is_array($datei)) {
foreach($datei AS $key => $value) {
if (file_exists($value)) {
$fileatt = $value; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
if ($dateiname[$key]) {
$fileatt_name = $dateiname[$key];// Filename that will be used for the file as the attachment
}else{
$fileatt_name = basename($value);
}
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
(*) "--{$mime_boundary}\n";
unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
unset($fileatt_name);
}
(**)$email_message .= "{$mime_boundary}--\n\n";
}
}elseif($datei) {
if (file_exists($datei)) {
$fileatt = $datei; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
if ($dateiname) {
$fileatt_name = $dateiname; // Filename that will be used for the file as the attachment
}else{
$fileatt_name = basename($datei);
}
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
unset($fileatt_name);
}
}
$ok = @mail($an, $email_subject, $email_message, $headers);
echo "OK: $ok";
}
Ersetze ich (*) durch (**) oder lasse (**) weg dann gibt er nur die PDF-Datei aus.
Bei nur einer Datei funktioniert es wunderbar!
Vielen Dank im Vorraus für eure Hilfe.
Zuletzt bearbeitet: