使用mPDF和PHPmailer动态附加PDF
我使用mPDF在点击按钮时生成PDF。我正在寻找一种方法来添加PDF的附件使用phpMail。以下是我尝试过的:使用mPDF和PHPmailer动态附加PDF,php,phpmailer,mpdf,Php,Phpmailer,Mpdf,我使用mPDF在点击按钮时生成PDF。我正在寻找一种方法来添加PDF的附件使用phpMail。以下是我尝试过的: $mpdf = new mPDF(); $mpdf->WriteHTML($output); $emailAttachment = $mpdf->Output('filename.pdf','S'); $emailAttachment = chunk_split(base64_encode($emailAttachment)); require_once('/
$mpdf = new mPDF();
$mpdf->WriteHTML($output);
$emailAttachment = $mpdf->Output('filename.pdf','S');
$emailAttachment = chunk_split(base64_encode($emailAttachment));
require_once('/inc/user_controller.php');
require_once('/inc/PHPMailer/class.phpmailer.php');
$user = new user();
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
$currentUserInfo = $user->userDetails($userId);
try {
$mail->AddAddress($currentUserInfo['emailAddress'], $currentUserInfo['firstName']);
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->Subject = 'Your file is attached';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML("This is a test");
$mail->AddAttachment($emailAttachment); // attachment
$mail->Send();
echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
$mpdf=新的mpdf();
$mpdf->WriteHTML($output);
$emailAttachment=$mpdf->Output('filename.pdf','S');
$emailAttachment=chunk_split(base64_encode($emailAttachment));
需要_once('/inc/user_controller.php');
需要一次('/inc/PHPMailer/class.PHPMailer.php');
$user=新用户();
$mail=新的PHPMailer(true)//默认使用php“mail()”;true参数意味着它将在错误上抛出异常,这是我们需要捕获的
$currentUserInfo=$user->userDetails($userId);
试一试{
$mail->AddAddress($currentUserInfo['emailAddress'],$currentUserInfo['firstName']);
$mail->SetFrom('name@yourdomain.com","最后一次",;
$mail->AddReplyTo('name@yourdomain.com","最后一次",;
$mail->Subject='您的文件已附加';
$mail->AltBody='要查看邮件,请使用与HTML兼容的电子邮件查看器!';//可选-MsgHTML将自动创建备用电子邮件查看器
$mail->MsgHTML(“这是一个测试”);
$mail->AddAttachment($emailAttachment);//附件
$mail->Send();
回显“消息发送正常”\n;
}捕获(phpmailerException$e){
echo$e->errorMessage();//来自PHPMailer的漂亮错误消息
}捕获(例外$e){
echo$e->getMessage();//来自其他任何内容的无聊错误消息!
}
我得到这个错误“无法访问文件:”然后是一堆垃圾,我认为这些垃圾来自base64\u encode
。理想情况下,PDF可以显示或下载,也可以通过电子邮件发送,而无需在我的服务器上保存副本。我可以接受正在创建的临时文件,但还没有尝试过
我已经测试了电子邮件功能,它在不添加附件的情况下工作,因此我知道问题在于mPDF和正确地附加它 使用mpdf的选项时,文件将作为字符串返回,而文件名参数将被忽略 但是,phpmailer的addAttachment函数将文件路径作为其第一个参数,而不是将文件作为字符串,请注意您看到的错误 您应该看看另一个名为AddStringAttachment的phpmailer函数:
AddStringAttachment($string,$filename,$encoding,$type)
我正在寻找一个空白邮件PDF MPDF创建的解决方案。你能找到一个可以让你成功发送的修复程序吗?如果你使用Swiftmailer,这可能会很有用:你为我节省了很多寻找解决方案的时间,谢谢!最好接受对你有用的答案,以便恰当地结束问题。