当前位置: 首页 > 后端技术 > PHP

验证邮箱地址的真实性

时间:2023-03-29 15:52:49 PHP

原文来自Laravist社区:https://www.codecasts.com/blo...优质用户,或者成为优质用户的潜力就更大了。所以当用户注册时,我们通常会绞尽脑汁验证邮箱地址的限制。本文并不是简单地讨论使用正则表达式来验证一个邮箱地址是否正确,而是希望用更多的手段来真正验证一个邮箱地址的真实性。本文验证邮箱地址有效性的内容包括以下内容:最常用的正则表达式匹配邮箱DNS有效性检查MX记录的有效性屏蔽一次性邮件服务商更多细节,如发起邮件请求validator.pizza啊哈,这里推荐大家使用https://www.validator.pizza邮箱验证服务,免费,准确率高。具体实现方式是通过向validator.pizza发送HTTP请求来验证用户邮箱是否有效。例如,普通的PHP代码可以是这样的:$email="666@qq.com";//这是laravist社区注册的垃圾邮件$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'https://www.validator.pizza/email/'.$email);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$response=curl_exec($ch);curl_close($ch);var_dump($response);或者在Laravel项目中,我们也可以直接扩展Validator来验证邮箱地址的合法性,将其添加到AppServiceProvider的boot()方法中,代码如下:publicfunctionboot(){Validator::extend('isValid',function($attribute,$value,$parameters,$validator){$request=(newClient())->get('https://www.validator.pizza/email/'.$value);$body=json_decode($request->getBody()->getContents());switch($body){case$body->status==400:returnfalse;case!$body->mx:returnfalse;case$}身体->一次性:返回假;默认值:返回真;}},'Emailaddressisnotavailable');}然后在验证时可以使用:$this->validate(request(),['email'=>'required|isValid'])这样就可以基本处理90%以上的邮箱验证,包括一次性邮箱验证和有效性验证