如何在 PHP 中验证电子邮件地址
本文将引导用户了解验证电子邮件地址和提高用户注册流程的最佳方法,从而进一步改进 PHP 网站。
电子邮件验证非常重要。出于多种原因,确保网站注册的用户拥有有效的电子邮件地址至关重要:
- 当用户输入电子邮件地址时,可及时发现拼写错误,并在允许注册之前提示更正。
- 与用户随时保持联系:当他们的信用卡到期时、当他们收到收据时、当推出新功能时等,都可以向用户发送电子邮件。
- 可保证用户在忘记密码时安全地重置密码:如果没有电子邮件地址,除了手动、人工验证之外,没有其他方法可以验证某人的身份。
- 可防止用户使用一次性电子邮件地址(例如来自Mailinator的电子邮件地址)进行网站注册。注册这些服务的用户通常会出于特定原因试图避免提供他们的真实电子邮件:或许是想滥用网站的免费增值功能等。通过允许真实个人或公司电子邮件地址的用户注册,才能降低网站被滥用的风险。
然而,电子邮件验证复杂之处在于如何验证用户网站的电子邮件地址。每个网站都有不同的要求,根据其网站的功能,可能只通过一两种特定方式验证用户的电子邮件地址。
为了帮助解决这个问题,我们最近发布了电子邮件验证器Packagist 库。
该PHP 库可以用多种不同的方式轻松验证电子邮件地址,并提供灵活的验证(您稍后会看到)。
所以,话不多说,让我们来看看它是如何操作!
创建电子邮件验证帐户
使用电子邮件验证程序库验证电子邮件地址,第一件事是在此处为电子邮件验证 API 服务创建一个免费帐户:https: //emailverification.whoisxmlapi.com/signup
创建免费帐户后,用户将可使用 API 服务免费核验 1,000 个电子邮件地址。如果您还想核验更多,可随时支付少量的费用。
安装包
现在您的帐户已设置完毕,接下来是安装 PHP 包。从命令行运行以下命令:
$ composer require whois-api/email-verifier
这将从 Packagist 下载并安装最新版的电子邮件验证程序包。
验证电子邮件地址
现在您已经有了帐户并装了安装包,可以立即运行验证电子邮件地址的一些代码。
此为一个小脚本, 验证文件
,它将使用所有可能的验证方法来验证电子邮件地址:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use WhoisApi\EmailVerifier\Builders\ClientBuilder;
$builder = new ClientBuilder();
$client = $builder->build('Your API key');
try {
/* Without refreshing */
echo print_r($client->get('support@whoisxmlapi.com', ['_hardRefresh']), true);
echo PHP_EOL;
} catch (\Throwable $exception) {
echo "Error: {$exception->getCode()} {$exception->getMessage()}" . PHP_EOL;
}
如所见,使用该库实际上只需三个步骤:
- 导入 Composer 的自动加载文件和库中的客户端构建器。
- ·
Api客户端
使用你在注册 API 服务时创建的 API 密钥来创建一个 ApiClient 对象。 - 运行该
GET
方法,传入要验证的电子邮件地址,以及一个包含应禁用选项的数组。默认情况下,所有可用选项均已启用。以下是可用选项的列表:validateDNS
,validateSMTP
,checkCatchAll
,checkFree
,checkDisposable
,_hardRefresh
。这些选项的详细描述在我们的文档页面。 文档页面.
示例中打印的数据将如下所示:
WhoisApi\EmailVerifier\Models\Response 对象([emailAddress] => support@whoisxmlapi.com [formatCheck] => 1 [smtpCheck] => 1 [dnsCheck] => 1 [freeCheck] => [disposableCheck] => [catchAllCheck] => 1 [mxRecords] => 数组([0] => ALT1.ASPMX.L.GOOGLE.com [1] => ALT2.ASPMX.L.GOOGLE.com [2] => ASPMX.L.GOOGLE.com [3] => ASPMX2.GOOGLEMAIL.com [4] => ASPMX3.GOOGLEMAIL.com)[audit] => [auditModel:protected] => WhoisApi\EmailVerifier\Models\Audit 对象([auditCreatedDate] => Carbon\Carbon 对象([date] => 2018-09-21 15:52:51.000000 [timezone_type] => 3 [时区] => UTC ) [auditUpdatedDate] => Carbon\Carbon 对象( [date] => 2018-09-21 15:52:51.000000 [timezone_type] => 3 [时区] => UTC ) ) )
disposableCheck
和 freeCheck
具有无形的价值 错误的
(它是布尔类型)。
每个返回的对象值对应不同类型的验证:
- 这
catchAllCheck
检查此电子邮件地址是否是“包罗万象”的地址。这是一种特殊类型的地址,可以接收任意数量的其他地址的电子邮件。这在企业中很常见,如果您向 test@hi.com 发送一封电子邮件,并向 test2@hi.com 发送另一封电子邮件,那么这两封电子邮件都会进入同一个收件箱。 - 这
disposableCheck
检查电子邮件地址是否是一次性的(通过 Mailinator 等服务创建)。这可以帮助您检查是否存在滥用行为。该值将是错误的
如果电子邮件不是一次性的,并且true
否则。 - 这
dnsCheck
检查电子邮件地址中的域名(例如:gmail.com)是否为有效域名。该值将是好的
如果域名好的话。 - 这
freeCheck
选项将检查电子邮件地址是否来自免费电子邮件提供商(如 Gmail)。如果电子邮件地址不是免费的,则此值为“false”,并且true
否则。 - 这
formatCheck
检查电子邮件地址中是否存在语法错误。这是一项基本检查,旨在捕获任何简单的拼写错误或重大错误。该值将是错误的
如无错误,且true
否则。
API 服务在幕后以多种有趣的方式为您处理所有这些类型的验证检查。我将在接下来的文章中进行介绍。
自定义电子邮件验证
正如我之前所提到的,上面的代码示例展示了如何使用所有可能的验证方法来进行电子邮件地址验证 - 但这可能并不是您想要的。
电子邮件验证可能很慢。每种类型的验证都只需要一小段时间(几分之一秒),当执行完所有检查后,时间会进行累积。
例如,如果您的网站只需要验证电子邮件地址以确保可以接收电子邮件,则可以将电子邮件验证程序包设置为仅执行该检查。电子邮件验证程序库非常灵活:用户可以启用或禁用任何想要检查的类型。
工作原理如下:
$客户端->获取('support@whoisxmlapi.com',['_hardRefresh','validateSMTP',... ])
GET
方法中,您可以传入一组禁用选项(如上所示),这些选项会直接影响执行的检查类型。您可以根据需要随意使用这些选项。
改善用户的注册流程
现在您已了解如何使用电子邮件验证器库来验证电子邮件地址,下一步则需要修改网站注册过程实现更便捷的使用。
方法相当简单。当用户填写并提交注册表时:
- 在网络服务器上接收表单数据
- 解析用户的注册数据,包括其电子邮件地址
- 使用电子邮件验证库立即验证用户的电子邮件地址
- 如果用户的电子邮件无效,则显示错误,提示用户重试
- 如果一切顺利,可创建用户的新帐户并登录
依照以上这些步骤,您可以在注册过程中及时发现用户的拼写错误,从而大大改善网站的注册流程。
总结
总而言之:验证用户的电子邮件地址可能是改善网站用户体验的简单方法。
如用户需要验证电子邮件地址,新的电子邮件验证器是完美的工具,因为它可以灵活处理许多不同类型的验证。
如果有任何疑问,请给我们发送电子邮件!