摘要:所以在用户注册的时候,我们通常会绞尽脑汁来验证一个邮箱地址的有限性。本文并不是简单地讨论使用正则表达式来验证一个邮箱地址是否正确,而是希望通过更多的手段来真正验证一个邮箱地址的邮箱性。
原文来自 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() 方法添加下面的代码:
public function boot() { Validator::extend("isValid", function ($attribute, $value, $parameters, $validator) { $request = (new Client())->get("https://www.validator.pizza/email/" . $value); $body = json_decode($request->getBody()->getContents()); switch ( $body ) { case $body->status == 400: return false; case !$body->mx: return false; case $body->disposable: return false; default: return true; } }, "邮箱地址不可用"); }
然后在验证的时候可以这样使用:
$this->validate(request(),["email"=>"required|isValid"])
这样一来,基本上就可以应付 90% 以上的邮件地址验证,包含一次性邮件地址验证和有效性验证。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/23091.html
摘要:上篇链接年,用更现代的方法使用上年,用更现代的方法使用中公钥的发布与交换讨论公钥安全交换的中文文章比较少,而这一环是整个加密体系的重中之重。年月,有攻击者恶意向公钥服务器提交了对两个著名网友的签名背书。此事件中的受害者的证书就被签名了次。上篇链接:2021年,用更现代的方法使用PGP(上)2021年,用更现代的方法使用PGP(中)PGP 公钥的 发布 与 交换讨论公钥安全交换的中文文章比较少...
阅读 869·2021-11-18 10:02
阅读 1668·2019-08-30 15:56
阅读 2569·2019-08-30 13:47
阅读 2639·2019-08-29 12:43
阅读 851·2019-08-29 11:19
阅读 1782·2019-08-28 18:23
阅读 2668·2019-08-26 12:23
阅读 3006·2019-08-23 15:29