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");