Hallo!
Wir arbeiten derzeit an der Umstellung auf PHP7. Nun haben wir ein Problem mit mail(), das einen Anhang versenden soll.
Ich möchte gerne eine PDF-Datei, die mittels FPDF dyn. erzeugt wird und im Verzeichnis temp/ angelegt wird per E-Mail (PHP mail()) versenden.
Die Datei wird korrekt erstellt und auch im Verzeichnis und temp/dateixyz.pdf gespeichert.
Hier mein Skript:
Die E-Mail wird mit einer Datei, die den korrekten Dateinamen hat, versendet. Die Datei kann ich jedoch nicht öffnen. Acrobat "meckert", dass die Datei beschädigt oder nicht korrekt dekodiert wurde.
Mag mir jemand auf die Sprünge helfen? Was ist mein Fehler?
Herzlichen Dank und Gruß!
maha
Wir arbeiten derzeit an der Umstellung auf PHP7. Nun haben wir ein Problem mit mail(), das einen Anhang versenden soll.
Ich möchte gerne eine PDF-Datei, die mittels FPDF dyn. erzeugt wird und im Verzeichnis temp/ angelegt wird per E-Mail (PHP mail()) versenden.
Die Datei wird korrekt erstellt und auch im Verzeichnis und temp/dateixyz.pdf gespeichert.
Hier mein Skript:
$dateiname = "dateixyz.pdf";
$file = "temp/".$dateiname."";
$file_name = "$dateiname";
$from = "[email protected]";
$to = "[email protected]";
$cc = "[email protected]";
$subject = "Ein Betreff";
$text = "Hier ist der Text...\r\n";
$boundary = md5(uniqid(time()));
$header = "From: $from\r\n";
$header .= "Reply-To: $from\r\n";
$header .= "CC: $cc\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$boundary\r\n";
$emessage .= "This is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format\r\n";
$emessage .= "--$boundary\r\n";
$emessage .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
$emessage .= "Content-Transfer-Encoding: 8bit\r\n";
$emessage .= "\r\n$text\r\n";
$file_content = fread(fopen($file,"r"),filesize($file));
$file_content = chunk_split(base64_encode($file_content));
$emessage .= "--$boundary\r\n";
$emessage .= "Content-Type: application/octet-stream; name="$file_name"\r\n";
$emessage .= "Content-Transfer-Encoding: base64\r\n";
$emessage .= "Content-Disposition: attachment; filename="$file_name"\r\n";
$emessage .= "$file_content\r\n";
$emessage .= "--$boundary--\r\n";
if (mail($to,$subject,$emessage,$header))
{
echo "mail send ... OK"; // or use booleans here
} else
{
echo "mail send ... ERROR!";
$error = error_get_last();
echo "\nERROR: " . $error["message"] ."\n";
};
$file = "temp/".$dateiname."";
$file_name = "$dateiname";
$from = "[email protected]";
$to = "[email protected]";
$cc = "[email protected]";
$subject = "Ein Betreff";
$text = "Hier ist der Text...\r\n";
$boundary = md5(uniqid(time()));
$header = "From: $from\r\n";
$header .= "Reply-To: $from\r\n";
$header .= "CC: $cc\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$boundary\r\n";
$emessage .= "This is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format\r\n";
$emessage .= "--$boundary\r\n";
$emessage .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
$emessage .= "Content-Transfer-Encoding: 8bit\r\n";
$emessage .= "\r\n$text\r\n";
$file_content = fread(fopen($file,"r"),filesize($file));
$file_content = chunk_split(base64_encode($file_content));
$emessage .= "--$boundary\r\n";
$emessage .= "Content-Type: application/octet-stream; name="$file_name"\r\n";
$emessage .= "Content-Transfer-Encoding: base64\r\n";
$emessage .= "Content-Disposition: attachment; filename="$file_name"\r\n";
$emessage .= "$file_content\r\n";
$emessage .= "--$boundary--\r\n";
if (mail($to,$subject,$emessage,$header))
{
echo "mail send ... OK"; // or use booleans here
} else
{
echo "mail send ... ERROR!";
$error = error_get_last();
echo "\nERROR: " . $error["message"] ."\n";
};
Mag mir jemand auf die Sprünge helfen? Was ist mein Fehler?
Herzlichen Dank und Gruß!
maha
Kommentar