私はWordpressを実行していて、複数のユーザーがいます。各ユーザーは、そのユーザーのみに関連したいくつかの一意の情報を含む毎週のレポートを受け取る必要があります。情報はPDF(pdfsを生成するためのmpdfを使用)で収集し、それに応じて各ユーザーの電子メールに送信する必要があります。ループ内の各ユーザーに固有のコンテンツを含むPDFを生成し、対応するユーザーの電子メールに各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 = '[email protected]';
$replyto = '[email protected]';
$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';
}
}
}
、それはそれぞれにメールを送信PDFを添付したユーザーですが、内容はすべて同じです。 PDFファイル名は期待どおりですが、内容が間違っています(ループ内の最初の項目を除く)。実際には、最初のユーザーのメール本文とPDFは正しいですが、残りのユーザーのPDFは空白のページがある最初のユーザーの同じ内容です。
私はforeachループの外側に$content = $mpdf->Output($pdfName, 'S');
を移動しようとしましたが、その場合、すべてのユーザーのコンテンツをまとめて同じPDFで送信します。しかし、各ユーザーは対応するPDFを受け取る必要があります。
対応するユーザーの電子メールに対応するPDFを送信するために、ループの内側/外側に何がないのだろうかと思います。
'var_dump($ x);'の後に 'ob_end_clean();'どのような結果になるでしょうか? – EniGma
これは、各ユーザーのコンテンツ@EniGma – aidadev
を返します。このページの 'echo'や' var_dump'は完全に動作します。しかし、個別に各ユーザーにpdfを送信すると、正しく動作しません。 @EniGma – aidadev