PHPmailer重复电子邮件问题 – 使用$mail-> Send()的条件语句
我遇到了
PHPmailer(版本5.1)的一个奇怪问题,我正在尝试解决这个问题.我在这里看到了很多好的反馈,所以我想我会尝试一下.我发现当我尝试使用基于$mail-> send()的条件语句创建自定义确认消息时,我收到重复的电子邮件.我可以使用phpmailer下载附带的通用testemail.php脚本复制它.这是代码:
要求’../class.phpmailer.php’; $mail->IsSendmail(); $mail->From = "example_from@domain.com"; $mail->FromName = "First Last"; $to = "example@domain.com"; $mail->AddAddress($to); $mail->Subject = "PHP Mailer test"; $message = "This is a test. n"; $mail->Body = $message; $mail->Send(); if ($mail->Send()) { echo 'Message has been sent.'; } else { echo "Mailer Error: " . $mail->ErrorInfo; } } catch(phpmailerException $e){ 上面的代码回应了“已发送消息”确认,但随后发送了两封电子邮件.如果我注释掉$mail-> send()行,我仍然收到“已发送消息”确认,只收到一条消息.如果我删除条件语句并将$mail-> send()行注释掉,则不会发送任何电子邮件. 为什么添加条件语句会导致发送电子邮件而不调用$mail-> send()方法?添加自定义确认消息的正确方法是什么? 解决方法
当你在条件中放入$mail-> Send()时,你实际上是再次调用它,发送另一条消息,并检查是否发送了第二条消息.
如果你保持 if ($mail->Send()) { echo 'Message has been sent.'; } else { echo "Mailer Error: " . $mail->ErrorInfo; } 并摆脱原来的,无条件的发送电话,你应该没事. 或者,如果它对您来说更清楚,或者您需要在其他地方进行某些处理,这取决于消息是否已成功发送,您可以执行基本相同的操作: $status = $mail->Send(); if ($status) { echo 'Message has been sent.'; } else { echo "Mailer Error: " . $mail->ErrorInfo; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |