PHPMailer 250 验证

PHPMailer 250 Verification

$mail->SMTPDebug = 2; 将显示我们发送邮件时发生的所有事情。

它还显示 SERVER -> CLIENT: 250 2.0.0 Ok: queued,这意味着所有检查都是正确的(host/pot 中没有问题,等等)邮件已发送。

我们可以在 if 条件下验证吗?

喜欢

if("SERVER -> CLIENT: 250 2.0.0 Ok: queued" == "SERVER -> CLIENT: 250 2.0.0 Ok: queued"){
echo "sent";
} else {
echo "error"; }

因为如果主机也不正确,下面的代码将始终显示 sent。 (测试过,然后我就来了)

try {
        $mail->IsSMTP(); 
        $mail->SMTPDebug  = 0;                     
        $mail->SMTPAuth   = true;                  
        $mail->Host       = "smtp.wrong.domain";      
        $mail->Port       = 587;               
        $mail->AddAddress("*****");
        $mail->Username="*****";  
        $mail->Password="*****";              
        $mail->SetFrom('*****','*****');
        $mail->AddReplyTo("*****@*****.*****","*****");
        $mail->Subject    = "*****";
        $mail->MsgHTML("Hi 587");
        $mail->Send();
echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

你只需要像这样检查send()的return

//send the message, check for errors
if (!$mail->send()) {
   echo 'Mailer Error: '. $mail->ErrorInfo;
} else {
   echo 'Message sent!';
}

您可以在 PHPMailer

中阅读更多相关信息

您没有显示所有代码,但我猜您没有启用异常,因此实际上没有错误检查。确保您的 PHPMailer 实例化如下所示:

$mail = new PHPMailer(true);

您需要 true 参数来启用例外。如果启用了异常,则无需检查 send() 的 return 状态,因为如果出现问题,它会抛出异常。