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

phpmailer-如何验证已发送的电子邮件是否到达目的地,php,phpmailer,Php,Phpmailer,phpmailer工作良好,能够以各种方式使用它,但是。。。。我试图找到一种方法来确定一个看起来有效的电子邮件地址是否真的到达了某个目的地。我不是说验证地址,比如… 如果(!$mail->validateAddress($email)){echo'不是有效的squiloople电子邮件模式';} 这是我的设置,正在通过gmail使用SMTP… $mail->isSMTP(); $mail->SMTPAuth = true; $mail

phpmailer工作良好,能够以各种方式使用它,但是。。。。我试图找到一种方法来确定一个看起来有效的电子邮件地址是否真的到达了某个目的地。我不是说验证地址,比如…
如果(!$mail->validateAddress($email)){echo'不是有效的squiloople电子邮件模式';}


这是我的设置,正在通过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;                  
如果电子邮件地址看起来像鸭子,嘎嘎叫起来像鸭子,那么…
$result=$mail->send()始终返回真值
var_dump($mail->send());//还返回布尔值
有没有办法测试电子邮件是否确实在某处收到?或者,这仅仅是通过谷歌的SMTP gmail服务器发出的单向呼喊


任何提示、技巧或提示都将不胜感激

你可以要求收据,但用户有选择权,像我这样的大多数人不会让它确认收据。你所能做的就是确保你所有的邮件标题都是正确的,并监控被退回的邮件。

确认邮件送达的唯一可靠方法是让收件人回复。跟踪像素的效果不是很好,或者根本不起作用,而且送货收据通常是不允许的。被退回的电子邮件只会识别生成未送达报告的死邮箱(并非所有邮箱都会),而不会识别处于活动状态但被忽略的邮箱。如果你发电子邮件的人想要你的东西,在他们通过回复电子邮件确认地址之前不要给他们。

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

如果帐户根本不存在,大多数服务器(包括gmail)仍会给出5.1.1“未知用户”响应,如果您通过SMTP直接发送到收件人的邮件服务器(但如果您通过中间服务器(如gmail)或使用
mail()
)发送,则phpMail会正确报告该响应。PHPMailer不支持这样做,但是自己做只需要调用并手动设置
Host
。此外,如果以这种方式发送,则不需要使用身份验证

你可以做各种各样的事情,比如检查域名是否存在——如果它不存在,邮件传递将无法工作。有些服务器会接受所有地址,并在稍后发送回跳(例如,如果它们有一个处理队列较长的垃圾邮件过滤器),但如果您提前被拒绝,则相当肯定地表明该地址不存在

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


您还应该在端口587上使用
tls
发送,而不是在465上使用
ssl
;请参阅PHPMailer提供的gmail示例。

是的,这可以通过使用imap读取gmail mailer守护进程为未送达邮件发回的已退回邮件通知,然后解析出虚假地址来完成。使用它,您可以返回数据库并清理它。我的登录/注册系统不需要有效的电子邮件来进行基本访问,但对于提升的权限,它会。我将只创建一个管理类函数,它处理特权请求,并对基本帐户进行数据库清理,这样新用户注册就不会有延迟时间

感谢大家的关注和贡献!!!现在我即将完成,我将查看一下
getmxr
,看看这是否更好,但仍计划扩展imap以自动化电子邮件代理帐户维护(删除、移动等…。

尝试以下操作:

if ( !PHPMailer::ValidateAddress($email) )


我找到的解决方案是:
1) 在mysql数据库中使用ID保存电子邮件副本。
2) 确保电子邮件已与1024中的域签名
3) 将img添加到电子邮件中,请求从PHP文件获取图像,如使用电子邮件ID而不是电子邮件ID
4) 在img.php中,获取电子邮件ID并使用时间和日期更新数据库的相应条目,然后呈现base64图像。


因此,现在您可以知道电子邮件何时打开以及时间和日期。

无法完成,您可以请求响应,但几乎没有邮件服务器会接受此类请求,因为垃圾邮件发送者使用该方法猜测合法的电子邮件地址。即使您没有收到“无效收件人”,您也无法确定。出于同样的原因,大多数被误发的电子邮件都会发送到“黑洞”,而不是发送错误回复。感谢所有的快速回复!我试图编码的是一种确定输入表单的电子邮件是否为伪造的方法。。。如果它通过了对基本电子邮件规则的验证,那么phpmailer会发送它并报告成功,并且无法知道它是否真的去了某个地方,或者Rod Serling是否正在收集它们。定义“伪造”。例如,我有一个有效的活动电子邮件地址,当我不想因为提供地址而收到任何垃圾邮件时,我会使用该地址。你可以整天在那里寄信。它将被交付,但我永远不会看到它。我所说的伪造只是一个不存在的帐户。。。得到一些牵引力。。。现在有一罐新的虫子。用于smtp.gmail.com的代理帐户将接收到传递给以下收件人的邮件。DNS错误:地址解析为bogus.com。失败:找不到域名。因此,报告返回的地址不存在或域不存在或两者都不存在。。。有没有办法让phpmailer访问该帐户并阅读这些电子邮件
if ( !$mail->validateAddress($email) )