Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为循环中的每个用户生成具有唯一内容的pdf,并将每个pdf发送给相应的用户';s电子邮件-php_Php_Wordpress_Email_Pdf_Mpdf - Fatal编程技术网

为循环中的每个用户生成具有唯一内容的pdf,并将每个pdf发送给相应的用户';s电子邮件-php

为循环中的每个用户生成具有唯一内容的pdf,并将每个pdf发送给相应的用户';s电子邮件-php,php,wordpress,email,pdf,mpdf,Php,Wordpress,Email,Pdf,Mpdf,我正在运行Wordpress,有多个用户。每个用户都应该收到每周报告,其中包含一些仅与该用户相关的唯一信息。应以PDF格式收集信息(使用mpdf生成PDF),并相应地发送给每个用户的电子邮件 我有report.php文件(我将在此文件上运行cron作业以每周发送报告),下面是我的代码: include('mpdf/mpdf.php'); $mpdf = new mPDF(); $args = array( 'post_type' => 'users', 'post_st

我正在运行Wordpress,有多个用户。每个用户都应该收到每周报告,其中包含一些仅与该用户相关的唯一信息。应以PDF格式收集信息(使用mpdf生成PDF),并相应地发送给每个用户的电子邮件

我有report.php文件(我将在此文件上运行cron作业以每周发送报告),下面是我的代码:

include('mpdf/mpdf.php');
$mpdf = new mPDF();

$args = array(
    'post_type' => 'users', 
    'post_status' => array( 'publish' ), 
    'order' => 'DESC',
    'posts_per_page'=> -1
);
$list = get_posts($args);
if($list){
    foreach($list as $suppItem){
        $userID = $suppItem->ID;
        ob_start();
        getUserReport($userID); /* this is the function which genarates html content
        for each user because the content of course for each user is unique */

        $x = ob_get_contents();
        ob_end_clean();
        $mpdf->WriteHTML($x);
        $today = date('Y-m-d');
        $pdfName = 'weekly-report-'.$userID.'-'.$today.'.pdf';
        $content = $mpdf->Output($pdfName, 'S');
        $content = chunk_split(base64_encode($content));
        $email = get_field('user_e_mail_address', $userID);
        if($email) {
            $mailto = $email;
        }
        $from_name = 'Website';
        $from_mail = 'info@example.com';
        $replyto = 'info@example.com';
        $uid = md5(uniqid(time())); 
        $subject = 'Weekly report of '.get_the_title($userID);
        $message = 'Attached find this week report.';
        $filename = $pdfName;

        $header = "From: ".$from_name." <".$from_mail.">\r\n";
        $header .= "Reply-To: ".$replyto."\r\n";
        $header .= "MIME-Version: 1.0"."\r\n";
        $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\""."\r\n";
        $finalmessage .= "--".$uid."\r\n";
        $finalmessage .= "Content-type:text/plain; charset=iso-8859-1"."\r\n";
        $finalmessage .= "Content-Transfer-Encoding: 7bit"."\r\n";  
        $finalmessage .= $message."\r\n";
        $finalmessage .= "--".$uid."\r\n";
        $finalmessage .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n";
        $finalmessage .= "Content-Transfer-Encoding: base64\r\n";
        $finalmessage .= "Content-Disposition: attachment; filename=\"".$filename."\""."\r\n";
        $finalmessage .= $content."\r\n";
        $finalmessage .= "--".$uid."--";

        if (mail($mailto, $subject, $finalmessage, $header)) {
            echo 'Sent!';
        } else {
            echo 'error';
        }
    }
}
include('mpdf/mpdf.php');
$mpdf=新的mpdf();
$args=数组(
“post_类型”=>“用户”,
“发布状态”=>数组(“发布”),
“订单”=>“描述”,
“每页帖子”=>-1
);
$list=get_posts($args);
如果($列表){
foreach($supplitem列为$supplitem){
$userID=$suppItem->ID;
ob_start();
getUserReport($userID);/*这是生成html内容的函数
因为每个用户的课程内容都是唯一的*/
$x=ob_get_contents();
ob_end_clean();
$mpdf->WriteHTML($x);
$today=日期('Y-m-d');
$pdfName='weekly report-'.$userID.-'.$today..pdf';
$content=$mpdf->Output($pdfName,'S');
$content=chunk_split(base64_encode($content));
$email=get_字段('user_e_mail_address',$userID);
如果($电子邮件){
$mailto=$email;
}
$from_name='网站';
$from_mail='10〕info@example.com';
$replyto='1〕info@example.com';
$uid=md5(uniqid(time());
$subject='Weekly report of'。获取标题($userID);
$message='附加的查找本周报告';
$filename=$pdfName;
$header=“From:”.$From\u name.\r\n”;
$header.=“回复:”.$replyto.\r\n”;
$header.=“MIME版本:1.0”“\r\n”;
$header.=“内容类型:多部分/混合;边界=\”“。$uid.\”“。\r\n”;
$finalmessage.=“-”$uid.\r\n”;
$finalmessage.=“内容类型:text/plain;charset=iso-8859-1”“\r\n”;
$finalmessage.=“内容传输编码:7bit”“\r\n”;
$finalmessage.=$message.“\r\n”;
$finalmessage.=“-”$uid.\r\n”;
$finalmessage.=“内容类型:应用程序/pdf;名称=\”.$filename.\”\r\n”;
$finalmessage.=“内容传输编码:base64\r\n”;
$finalmessage.=“内容处置:附件;文件名=\”“.$filename.\”“.\r\n”;
$finalmessage.=$content.\r\n;
$finalmessage.=“--”“$uid.”--”;
if(邮件($mailto,$subject,$finalmessage,$header)){
回音‘已发送!’;
}否则{
回声“错误”;
}
}
}
当我运行上述代码时,它会向每个用户发送电子邮件,并附上PDF,但所有用户的内容都是相同的。PDF文件名是预期的,但内容错误(循环中的第一项除外)。实际上,第一个用户的电子邮件正文和PDF是正确的,但rest用户的PDF和第一个用户的内容相同,有一些空白页

我试图移动
$content=$mpdf->Output($pdfName,'S')在foreach循环之外,但在这种情况下,它会将所有用户的内容收集在一起,并以相同的PDF格式发送。但每个用户都应该收到相应的PDF


我想知道我在循环内部/外部遗漏了什么,以便它将相应的PDF发送到相应的用户电子邮件。

在我看来
ob\u get\u contents()
每次只检索第一个条目。你能清除ob\u get\u contents()
吗?或者您可以尝试从
getUserReport(…)
-方法以字符串形式返回html代码

编辑

...
$html = getUserReport(...);  // get the report
$mpdf->WriteHTML($html);     // write the report to pdf
$html = "";                  // clear the local variable
...

更新:

最后它开始工作了。我试着把这行(
$mpdf=new mpdf()
)移到foreach循环中,它就工作了!下面您可以看到我的代码在循环中的样子:

$mpdf = new mPDF();
ob_start();
getUserReport($userID);
$html = ob_get_contents();
ob_end_clean();
$mpdf->WriteHTML($html);

我希望这将有助于未来的人

我尝试从
getUserReport()
函数返回html,它正确返回每个用户的信息@Patrick vogtt这太棒了。如果你把html放在
WriteHTML(html)
函数中,它就不工作了?它工作了。问题是在发送电子邮件时,我在mu问题中描述了如何发送电子邮件到每个用户的电子邮件,但PDF内容是相同的@Patrick Vogtc你能在我的回复帖子编辑中尝试吗?可能您必须在
WriteHTML(…)
函数之后清除局部变量。我尝试过,但结果相同。
ob_start()$html=getSupplierReport($supplId)$html=ob_get_contents();ob_end_clean()$mpdf->WriteHTML($html)$html=“”。如果没有
ob\u get\u contents()
它根本不起作用@Patrick Vogtwrite
var\u dump($x)
ob_end_clean()之后结果会是什么?它返回每个用户的内容@EniGmaeverything我
echo
var\u dump
在这个页面中工作得非常好。但当分别向每个用户发送pdf时,它无法正常工作@谜你必须添加
$mpdf->Output();退出
if(mail($mailto,$subject,$finalmessage,$header)){}else{}
之后,我的意思是在循环的末尾!我添加了,但现在它根本不能正常工作:pdf是空的,只有第一个用户收到带有空pdf的电子邮件@谜