phpmailer工作正常,并能够以各种方式使用它,但….我正试图找到一种方法来确定一个有效的外观电子邮件地址是否实际上到达某个目的地.我不是在谈论验证地址,例如……
if(!$mail-> validateAddress($email)){echo’不是有效的squiloople电子邮件模式’;}
这是我的设置是使用SMTP通过Gmail …
$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;
如果电子邮件地址看起来像鸭子,嘎嘎叫像鸭子那么……
$result = $mail-> send();永远都会回归真实!
的var_dump($MAIL->置于()); //也返回布尔值
有没有办法测试电子邮件是否实际收到?或者这是通过谷歌的SMTP gmail服务器严格单向喊出???
任何提示,技巧或指针将不胜感激.
解决方法:
$mail-> send()不会总是返回true.如果它所涉及的发送过程的部分有效,则返回true.因此,如果您发送到一个未知地址,但通过gmail发送,gmail的服务器当时不知道该地址是否存在,因此它将被接受并在以后退回.如果您在通过Gmail发送时发送到gmail地址,则会立即失败.
如果帐户根本不存在,大多数服务器(包括gmail)仍将提供5.1.1“未知用户”响应,如果您通过SMTP直接发送给收件人的假定邮件服务器,则PHPMailer将正确报告该响应(但是不是你通过中间服务器(如gmail)或使用mail()发送的. PHPMailer没有内置支持,但是自己动手只需要调用getmxrr
并手动设置Host.如果您以这种方式发送,也不需要使用身份验证.
您可以执行各种操作,例如检查域是否存在 – 如果不存在,则邮件传递将不起作用.有些服务器会接受所有地址并稍后发送退回(例如,如果他们有一个带有长处理队列的垃圾邮件过滤器),但如果你被预先拒绝,那么这是一个非常确定的地址不存在的迹象.
您还需要查看退回处理,这将允许您删除看起来不错但后来证明不是的地址,这与PHPMailer所做的完全不同.我现在会警告你 – 弹跳处理是非常不愉快的!
您还应该使用端口587上的tls发送,而不是使用465上的ssl发送;请参阅PHPMailer提供的gmail示例.