php - HTML2PDF 页面存储文件但不通过电子邮件发送
问题描述
我的代码有问题,它应该将 pdf 文件存储在服务器中,然后将其作为电子邮件的附件自动发送给客户端,代码如下:
ob_end_clean();
$fileName='CW00'.$commande.'.pdf';
$file = $html2pdf>Output('/home/itscoma/public_html/components/'.$fileName,'F');
try{
$mail = new PHPMailer();
$mail->IsHTML(true);
$mail->IsSMTP();
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->CharSet = 'UTF-8';
$mail->Host= "smtp.gmail.com";
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 465;
$mail->Username = "***@***.com";
$mail->Password = "******";
$mail->From='a***@gmail.com';
$mail->AddAddress('*****@gmail.com');
$mail->AddReplyTo('*****@gmail.com');
$mail->Subject='sujet';
$mail->Body='message';
$mail->AddAttachment($file);
$mail->Send();
unset($mail);
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
解决方案
这里有几个问题。这种组合不起作用:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 465;
更改Port
为 587 以使用该加密模式,或更改加密模式以PHPMailer::ENCRYPTION_SMTPS
使用端口 465。
这行毫无意义:
$file = $html2pdf>Output('/home/itscoma/public_html/components/'.$fileName,'F');
因为您缺少 a -
,所以应该是$html2pdf->Output
。
接下来,该方法返回什么?你得到$file
什么?如果它不是保存文件的路径(无论如何你已经知道了),那么将它传递给addAttachment
它不会做任何有用的事情。最好检查一下这个调用是否真的有效——目前你只是假设它有效。
如果您检查 的返回值,您会知道这一点addAttachment()
,但您不是,所以您不知道它失败了。
我建议试试这个:
if (!$mail->addAttachment('/home/itscoma/public_html/components/' . $fileName)) {
echo 'Attachment failed';
}
推荐阅读
- haskell - 如何修复类型匹配错误
- node.js - Nodejs Electron如何摆脱Windows上下文菜单上的右键单击选项
- docker - 在 Docker Compose 集群启动后等待
- javascript - 将新键名从旧数组分配给数组
- regex - 如何在 PowerShell 中使用变量作为正则表达式的一部分
- java - 如何仅使用一个片段在带有数据库的tablayout中更新viewpager中的片段?
- php - Office365 推送通知 API 错误:验证失败,因为响应正文
- c++ - 替换 std::map 值时崩溃
- solidity - 在solidity中访问内存字节的元素
- primefaces - Primefaces自动完成下拉菜单消失,点击滚动条后消失