加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPmailer重复电子邮件问题 – 使用$mail-> Send()的条件语句

发布时间:2020-12-13 22:02:04 所属栏目:PHP教程 来源:网络整理
导读:我遇到了 PHPmailer(版本5.1)的一个奇怪问题,我正在尝试解决这个问题.我在这里看到了很多好的反馈,所以我想我会尝试一下.我发现当我尝试使用基于$mail- send()的条件语句创建自定义确认消息时,我收到重复的电子邮件.我可以使用phpmailer下载附带的通用testem
我遇到了 PHPmailer(版本5.1)的一个奇怪问题,我正在尝试解决这个问题.我在这里看到了很多好的反馈,所以我想我会尝试一下.我发现当我尝试使用基于$mail-> send()的条件语句创建自定义确认消息时,我收到重复的电子邮件.我可以使用phpmailer下载附带的通用testemail.php脚本复制它.这是代码:

要求’../class.phpmailer.php’;
尝试{
????$mail = new PHPMailer(true); //新实例,启用了例外
????$mail-> SMTPDebug = 1;
????$MAIL-> IsSMTP(); //告诉班级使用SMTP
????$mail-> SMTPAuth = true; //启用SMTP身份验证
????$mail-> Port = 25; //设置SMTP服务器端口
????$mail-> Host =“mail.domain.com”; // SMTP服务器
????$mail->用户名=“用户名”; // SMTP服务器用户名
????$mail->密码=“密码”; // SMTP服务器密码

$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){
????echo $e-> errorMessage();
}

上面的代码回应了“已发送消息”确认,但随后发送了两封电子邮件.如果我注释掉$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;   
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读