PHPMailer 不发送 pdf 附件
PHPMailer dont send the pdf attachment
我的代码使用 fpdf 创建了一个 pdf 文件,该文件将安全地保存在名为“bookings”的文件夹中。
文件保存后,应该用phpmailer通过邮件发送给用户。
实际上电子邮件会正确发送,但附件未发送。
这是实际的代码,我现在一整天都在尝试,但我没有任何运气:
$filename = 'Buchung-Nr.' . $booking_id . '.pdf';
$path = $system->SETTINGS['siteurl'] . 'bookings/';
$outputfile = 'bookings/Buchung-Nr.' . $booking_id . '.pdf';
$pdfout = $pdf->Output($outputfile, 'F');
$bodytext = 'Vielen Dank für Ihre Buchung';
require $include_path . 'phpmailer/src/Exception.php';
require $include_path . 'phpmailer/src/PHPMailer.php';
require $include_path . 'phpmailer/src/SMTP.php';
$mail = new PHPMailer();
$replytotext = 'Ostsee-Deluxe - Buchung-Nr.' . $booking_id;
try {
//Server settings
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'sslout.df.eu'; //Set the SMTP server to send through
$mail->SMTPSecure = "TLS";
$mail->SMTPAuth = true;
$mail->CharSet = 'UTF-8'; //Enable SMTP authentication
$mail->Username = 'USERNAME-HIDDEN'; //SMTP username
$mail->Password = 'PW-HIDDEN'; //SMTP password
$mail->Port = 25; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
//Recipients
$mail->setFrom('kontakt@ostsee-deluxe.com', 'Ostsee-Deluxe');
$mail->addAddress($email, $fullname); //Add a recipient
$mail->addReplyTo('kontakt@ostsee-deluxe.com', $replytotext);
$mail->addBCC('kontakt@ostsee-deluxe.com');
//Attachments
$mail->addAttachment($path/$filename); //Optional name
var_dump($path,$filename);
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Buchungs-Nr. ' . $booking_id;
$mail->Body = $bodytext;
$mail->AltBody = $bodytext_alt;
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
我在文件夹里每次都能打开新建的pdf附件,但是邮件里的附件是空的
你有什么解决办法吗?
编辑:
哦,好主意,谢谢你,我现在明白了!
我改变了:
$path = $system->SETTINGS['siteurl'] . 'bookings/'; to $path = 'bookings/';
和
$mail->addAttachment($path . $filename); //Optional name
现在可以了,谢谢@Akshay Hedge 和 Sven Eberth!!!
去年我得到了一些反对票,但这次你们对这个基本问题都非常友好,继续加油! :)
我觉得
$mail->addAttachment($path/$filename);
应该是
$mail->addAttachment($path . $filename);
否则你将路径除以文件名。
如果路径和文件存在,请使用双引号。
来自
$mail->addAttachment($path/$filename);
到
$mail->addAttachment("$path/$filename");
我的代码使用 fpdf 创建了一个 pdf 文件,该文件将安全地保存在名为“bookings”的文件夹中。 文件保存后,应该用phpmailer通过邮件发送给用户。
实际上电子邮件会正确发送,但附件未发送。
这是实际的代码,我现在一整天都在尝试,但我没有任何运气:
$filename = 'Buchung-Nr.' . $booking_id . '.pdf';
$path = $system->SETTINGS['siteurl'] . 'bookings/';
$outputfile = 'bookings/Buchung-Nr.' . $booking_id . '.pdf';
$pdfout = $pdf->Output($outputfile, 'F');
$bodytext = 'Vielen Dank für Ihre Buchung';
require $include_path . 'phpmailer/src/Exception.php';
require $include_path . 'phpmailer/src/PHPMailer.php';
require $include_path . 'phpmailer/src/SMTP.php';
$mail = new PHPMailer();
$replytotext = 'Ostsee-Deluxe - Buchung-Nr.' . $booking_id;
try {
//Server settings
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'sslout.df.eu'; //Set the SMTP server to send through
$mail->SMTPSecure = "TLS";
$mail->SMTPAuth = true;
$mail->CharSet = 'UTF-8'; //Enable SMTP authentication
$mail->Username = 'USERNAME-HIDDEN'; //SMTP username
$mail->Password = 'PW-HIDDEN'; //SMTP password
$mail->Port = 25; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
//Recipients
$mail->setFrom('kontakt@ostsee-deluxe.com', 'Ostsee-Deluxe');
$mail->addAddress($email, $fullname); //Add a recipient
$mail->addReplyTo('kontakt@ostsee-deluxe.com', $replytotext);
$mail->addBCC('kontakt@ostsee-deluxe.com');
//Attachments
$mail->addAttachment($path/$filename); //Optional name
var_dump($path,$filename);
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Buchungs-Nr. ' . $booking_id;
$mail->Body = $bodytext;
$mail->AltBody = $bodytext_alt;
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
我在文件夹里每次都能打开新建的pdf附件,但是邮件里的附件是空的
你有什么解决办法吗?
编辑: 哦,好主意,谢谢你,我现在明白了! 我改变了:
$path = $system->SETTINGS['siteurl'] . 'bookings/'; to $path = 'bookings/';
和
$mail->addAttachment($path . $filename); //Optional name
现在可以了,谢谢@Akshay Hedge 和 Sven Eberth!!! 去年我得到了一些反对票,但这次你们对这个基本问题都非常友好,继续加油! :)
我觉得
$mail->addAttachment($path/$filename);
应该是
$mail->addAttachment($path . $filename);
否则你将路径除以文件名。
如果路径和文件存在,请使用双引号。
来自
$mail->addAttachment($path/$filename);
到
$mail->addAttachment("$path/$filename");