首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdf + HTML2PDF: pdf无效和pj

pdf + HTML2PDF: pdf无效和pj
EN

Stack Overflow用户
提问于 2020-10-23 16:41:10
回答 1查看 86关注 0票数 2

大家早上好,我想附加一个HTML2PDF格式创建的格式,然后发送它与PHMailer。一切正常,电子邮件处理得也很顺利,我设法把PDF保存到了我的硬盘上。但是当我尝试将它附加到我的电子邮件中时,pdf在pj中是正常的,但我无法打开它。enter image description here

它与我在本地创建的pdf大小相同。我遵循了这两个库的教程和维基,我想^^这是我的PHPMailer代码:

代码语言:javascript
复制
<?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的代码:

代码语言:javascript
复制
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'“,但没有任何改变。你知道我的错误吗?

谢谢大家

EN

回答 1

Stack Overflow用户

发布于 2020-10-23 17:03:40

一次调试一件事。首先手动下载PDF,并确保它看起来是正确的-如果PDF一开始就不好,通过电子邮件发送它不会改善事情。接下来,检查它是否可从PHP读取-例如,使用readfile()为其提供服务。然后,当您尝试附加它时,请检查调用addAttachment()的返回值,如下所示:

代码语言:javascript
复制
if (!$mail->addAttachment('/path/to/myPdf.pdf')) {
    die('could not read PDF');
}

还要注意addAttachmentaddStringAttachment之间的区别;您添加的是一个已保存到磁盘的文件,因此您需要第一个文件,而不是第二个文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64496749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档