php - PHPMailer + HTML2PDF:pdf无效和pj
问题描述
大家早上好,我想附上一个使用 HTML2PDF 的表单创建的 PDF,然后使用 PHMailer 发送。一切正常,电子邮件顺利,我设法通过将 PDF 保存在我的硬盘上来创建它。但是当我尝试将其附加到我的电子邮件时,pdf 在 pj 中很好,但我无法打开它。 在此处输入图像描述
它与我本地创建的 pdf 大小相同。我遵循了这两个库的教程和 wiki,我认为 ^^ 这是我的 PHPMailer 代码:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require './vendor/phpmailer/phpmailer/src/Exception.php';
require './vendor/phpmailer/phpmailer/src/PHPMailer.php';
require './vendor/phpmailer/phpmailer/src/SMTP.php';
require './vendor/autoload.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
try {
//Server settings
$mail->SMTPDebug = 0; // Enable verbose debug output
$mail->isSMTP(); // Send using SMTP
$mail->Host = '******'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '*****'; // SMTP username
$mail->Password = '*****'; // SMTP password
//$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->Port = ****; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
//Recipients
$mail->setFrom('****@****.com', '****');
$mail->addAddress($to); // Add a recipient
//$mail->addAddress('ellen@example.com'); // Name is optional
$mail->addReplyTo($shop_email, 'Votre magasin');
//$mail->addCC('cc@example.com');
$mail->addBCC($shop_email);
// Attachments
$mail->addStringAttachment($pdf_done, 'myPdf.pdf'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = strip_tags($message);
$mail->send();
echo '';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>
这是 HTML2PDF 的代码:
ob_start();
// --> mon code HTML de creeation du PDF
$content = ob_get_clean();
require_once dirname(__FILE__).'/../vendor/autoload.php';
use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;
try{
$pdf = new \Spipu\Html2Pdf\Html2Pdf('P', 'A4', 'fr');
$pdf->writeHTML($content);
$pdf_done = $pdf->output('myPdf.pdf', 'S');
}catch(\Spipu\Html2Pdf\Exception\Html2PdfException $e){
die($e);
}
?>
我尝试在 addStringAttachment 中添加“,'base64','application / pdf'”,但它没有改变任何东西。你知道我的错误吗?
谢谢你们
解决方案
一次调试一件事。首先手动下载 PDF 并确保它看起来正确 - 如果 PDF 开始不好,通过电子邮件发送它不会改善事情。接下来检查它是否可以从 PHP 中读取——例如使用readfile()
. 然后,当您尝试附加它时,请检查您的调用的返回值,addAttachment()
如下所示:
if (!$mail->addAttachment('/path/to/myPdf.pdf')) {
die('could not read PDF');
}
addAttachment
还要注意和之间的区别addStringAttachment
;您正在添加一个已保存到磁盘的文件,因此您需要第一个,而不是第二个。
推荐阅读
- javascript - 使用按钮排序数组
- graphql - Apollo GraphQL 远程和本地查询
- java - javafx中的切换屏幕按钮无法识别路径
- python - 运行简单 API 示例时出现属性错误
- javascript - 如何在子元素的页面加载上替换 innerHTML?
- angular - HeadlessChrome Karma 测试 - 无法读取 null 的属性“innerText”
- sql - SQL 开发人员错误 i/o 网络适配器:未找到 tns
- reactjs - 通过下拉组件选择添加动态文本字段?
- android - 如何从 ImageButton 中删除默认阴影?
- java - 如何将“Set functions”(如 removeAll 和 addAll)从 Java 转换为 C++?可以使用擦除或插入来完成吗?