phpmailer-如何验证已发送电子邮件已到达目的地

Jam*_*son 2 php phpmailer

phpmailer可以正常工作,并且可以通过多种方式使用它,但是.....我正在尝试寻找一种方法来确定是否有有效的电子邮件地址确实使它到达了某个目的地。我不是在谈论验证地址,例如...
if (!$mail->validateAddress($email)) {echo 'Not a valid squiloople email pattern';}

这是我的设置通过gmail使用SMTP ...

$mail->isSMTP();                        
$mail->SMTPAuth = true; 
$mail->SMTPDebug = 0;                   
$mail->isHTML(true);
$mail->Host = 'smtp.gmail.com';         
$mail->Username = "XXXl@gmail.com";  
$mail->Password = "XXX";    
$mail->SMTPSecure = 'ssl';              
$mail->Port = 465;                  
Run Code Online (Sandbox Code Playgroud)

如果电子邮件地址看起来像鸭子,而象鸭子一样叫a,那么...
$result = $mail->send();始终返回true!
var_dump($mail->send()); // Also returns Boolean

有没有办法测试电子邮件是否确实在某处收到?还是严格来说是通过Google的SMTP gmail服务器的一种单向喊叫???

任何提示,技巧或指针,将不胜感激。

Syn*_*hro 5

$mail->send()不会始终返回true。如果发送过程中涉及的部分工作,则返回true 。因此,如果您发送到未知地址,但通过gmail发送,则gmail的服务器当时不知道该地址是否存在,因此该地址将被接受并在以后退回。如果您在通过gmail发送邮件时发送到gmail地址,那么它将立即失败。

如果一个帐户根本不存在,大多数服务器(包括gmail)仍将给出5.1.1“未知用户”响应,如果您通过SMTP直接发送给收件人的假定邮件服务器,PHPMailer将正确报告该响应(但如果您是通过中间服务器(例如gmail)或使用发送的,则不会mail()。PHPMailer没有内置的支持,但是您自己执行操作仅涉及到手动调用getmxrr和设置Host。同样,如果您以这种方式发送,则无需使用身份验证。

您可以执行各种操作,例如检查域是否存在-如果不存在,则邮件传递将无法进行。有些服务器会接受所有地址并在以后发送退回邮件(例如,如果它们的垃圾邮件过滤器的处理队列很长),但是如果您被预先拒绝,则可以肯定地表明该地址不存在。

您还需要研究退回处理,这将允许您删除看起来不错但后来被证明不正确的地址,这与PHPMailer所做的任何事情完全不同。我现在警告您-弹跳处理非常不愉快!

您还应该tls在端口587(而不是ssl465)上发送using ;请参阅PHPMailer随附的gmail示例。