Php 如何检测邮件:Laravel 5.2的故障

Php 如何检测邮件:Laravel 5.2的故障,php,laravel,laravel-5,laravel-5.2,laravel-mail,Php,Laravel,Laravel 5,Laravel 5.2,Laravel Mail,我正在根据表单数据向用户发送电子邮件。在看了一段时间的文档后,我想出了如何发送电子邮件的方法。但是,假设用户在输入中输入错误,我如何向用户显示他们的电子邮件被退回 这是我的代码,不起作用 if( count(Mail::failures()) > 0 ) { echo "There was one or more failures. They were: <br />"; foreach(Mail::failures as $email_address) {

我正在根据表单数据向用户发送电子邮件。在看了一段时间的文档后,我想出了如何发送电子邮件的方法。但是,假设用户在输入中输入错误,我如何向用户显示他们的电子邮件被退回

这是我的代码,不起作用

if( count(Mail::failures()) > 0 ) {
    echo "There was one or more failures. They were: <br />";
    foreach(Mail::failures as $email_address) {
        echo " - $email_address <br />";
    }
} else {
    echo "No errors, all sent successfully!";
}
if(计数(Mail::failures())>0){
echo“有一个或多个故障。它们是:
”; foreach(邮件::失败为$email\u地址){ echo“-$email_地址
”; } }否则{ echo“无错误,全部成功发送!”; }

“不工作”意味着我可以写一封随机的电子邮件,比如
dfgkndgrigpergerg@fioerjoif.com
,它会说
“没有错误,全部成功发送!”

简单的回答是,您无法在Laravel中验证这一点

您在laravel配置中提供发件人地址,如果您将电子邮件从该地址发送到不存在的地址,它仍将被发送到smtp服务和包含该地址域名的接收服务器。在某些情况下,您将从该服务器返回一个非收件人的答案,而在某些情况下,您不会。这并不取决于您是从Laravel还是从其他邮件客户端应用程序发送电子邮件


如果你想阻止用户做O型,你应该考虑添加一个验证字段,让用户重新键入电子邮件地址,并用Laravel中的“确认确认规则”验证它们。()

只是想补充一点,您不应该信任Mail::failures(),因为它只会在非常特定的情况下返回错误,这几乎是不可能的。例如,SMTP可能会立即返回故障,但sendmail几乎从不返回。Mail:failures()可能适用于处理意外的发件人错误(身份验证失败或类似情况),但不适用于验证


是的,大多数情况下,你只能在发送电子邮件后才知道地址是否正确。

我认为这是不可能的,但在搜索之后,我发现:

是一个PHP函数,可轻松用于验证电子邮件地址并确保其有效且确实存在于邮件服务器上

此函数用于连接邮件服务器并检查邮箱是否存在

只需调用函数:

verifyEmail('some.email.address@example.com', 'my.email.address@my-domain.com');
第一个电子邮件地址“some.email”。address@example.com'是要检查的一个,第二个是'my.email'。address@my-“domain.com”是提供给服务器的电子邮件地址(仅用于测试,但如果是有效电子邮件则更好)

如果电子邮件是some.email,这将重新运行字符串“valid”。address@example.com是有效的,如果电子邮件无效,则为“无效”


希望有帮助

我已经重写了这段代码,现在它是一个类,可以通过composer安装。查看最新版本。谢谢,我知道了。但我还有一种好奇心。例如,假设电子邮件地址有效,但由于internet断开连接而无法正确发送。拉威尔能就此发出警告吗?同样的问题。当我们发送大量电子邮件时,可能其中一些没有正确发送,因为正如您之前提到的,有些电子邮件是无效的,如
dfgkndgrigpergerg@fioerjoif.com
,或者可能是因为internet已断开连接,所以它们不会被发送。我也使用这种方法来识别所有未发送的电子邮件,但仍然失败。你找到解决办法了吗?好的,我找到了。但我还有一种好奇心。例如,假设电子邮件地址有效,但由于internet断开连接而无法正确发送。“拉威尔能就此发出警告吗?@SeadLab我不知道你是不是认真的?”?