Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 带有循环脚本的PHP mailer和FPDF附件在第一次运行后停止_Loops_Phpmailer_Fpdf - Fatal编程技术网

Loops 带有循环脚本的PHP mailer和FPDF附件在第一次运行后停止

Loops 带有循环脚本的PHP mailer和FPDF附件在第一次运行后停止,loops,phpmailer,fpdf,Loops,Phpmailer,Fpdf,我正在运行以下脚本来生成和发送电子邮件。电子邮件正文是在while循环中生成的(内容不同)-工作正常。但现在我已经尝试包含一个脚本来生成PDF附件(通过FPDF库),在每个迭代中,附件都是不同的 问题是:对于第一种情况,循环只运行一次,然后停止。提前感谢您的来信 我的代码: <? $mail = new PHPMailer(); $mail->SMTPDebug = 1; $mail->isSMTP(); $

我正在运行以下脚本来生成和发送电子邮件。电子邮件正文是在while循环中生成的(内容不同)-工作正常。但现在我已经尝试包含一个脚本来生成PDF附件(通过FPDF库),在每个迭代中,附件都是不同的

问题是:对于第一种情况,循环只运行一次,然后停止。提前感谢您的来信

我的代码:

<?
$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帐户发送:)