Loops 带有循环脚本的PHP mailer和FPDF附件在第一次运行后停止
我正在运行以下脚本来生成和发送电子邮件。电子邮件正文是在while循环中生成的(内容不同)-工作正常。但现在我已经尝试包含一个脚本来生成PDF附件(通过FPDF库),在每个迭代中,附件都是不同的 问题是:对于第一种情况,循环只运行一次,然后停止。提前感谢您的来信 我的代码:Loops 带有循环脚本的PHP mailer和FPDF附件在第一次运行后停止,loops,phpmailer,fpdf,Loops,Phpmailer,Fpdf,我正在运行以下脚本来生成和发送电子邮件。电子邮件正文是在while循环中生成的(内容不同)-工作正常。但现在我已经尝试包含一个脚本来生成PDF附件(通过FPDF库),在每个迭代中,附件都是不同的 问题是:对于第一种情况,循环只运行一次,然后停止。提前感谢您的来信 我的代码: <? $mail = new PHPMailer(); $mail->SMTPDebug = 1; $mail->isSMTP(); $
<?
$mail = new PHPMailer();
$mail->SMTPDebug = 1;
$mail->isSMTP();
$mail->addReplyTo('');
$mail->isHTML(true);
$mail->Subject = "";
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->CharSet = 'utf-8';
$mail->setFrom('');
while(($data=MySQL_Fetch_Array($vysl))!=NULL) {
require_once('invoicetopdf.php');
$message="";
$mail->AddStringAttachment($invoice, 'Invoice.pdf', 'base64', 'application/pdf');
$mail->Username = "";
$mail->Password = "";
$mail->addAddress($to);
$mail->Body = $message;
if (!$mail->send()) {echo "Mailer Error: " . $mail->ErrorInfo;}
else {
$mail->clearAddresses();
$mail->ClearAllRecipients();
$mail->clearAttachments();
echo "Ok";
}
} //while
//invoicetopdf.php:
$data = MySQL_Fetch_Array($vysl);
require_once('../knihovny/pdf/fpdf.php');
$pdf = new PDF();
$pdf->.....;
$invoice=$pdf->Output('S');
?>
重复运行代码有点奇怪。我将在
invoicetopdf.php
文件中定义一个函数,在脚本顶部加载它,然后在循环中调用该函数以获取PDF数据。您还调用了两次mysql\u fetch\u array
——一次在while循环中,一次在函数中,这意味着一半的数据将误入歧途
require_once('invoicetopdf.php');
while(($data=MySQL\u Fetch\u Array($vysl))!=NULL){
$message=“”;
$mail->AddStringAttachment(generatePDF($data),'Invoice.pdf','base64','application/pdf');
...
//invoicetopdf.php:
需要一次('../knihovny/pdf/fpdf.php');
函数generatePDF($data){
$pdf=新pdf();
$pdf->。。。。。;
返回$invoice=$pdf->输出('S');
}
我还建议将用户名
和密码
移出循环,您可能不需要调用clearAllRecipients()
;clearAddresses()
就足够了
设置
SMTPDebug=2
将让您更多地了解SMTP land中发生的情况。现在它可以工作了:主要问题是将类和函数混合在一起。请参阅:
谢谢大家!给定的代码不完整-它应该会在该行上抛出一个语法错误,并带有所有的点。此外,
MySQL\u Fetch\u Array
多年前已被删除是的,这些点缩短了下面的一段代码(在本例中并不重要:)invoicetopdf.php生成附件。正确,不幸的是只有一次,不是重复。谢谢你的帮助。我会尝试一下。这是一个更大项目的一部分,所以脚本有点复杂:)有些事情是有原因的(eq、user和pass是循环的,因为电子邮件不总是从同一个Gmail帐户发送:)