如何在 PHP 中验证电子邮件地址
本文将引导用户了解验证电子邮件地址和提高用户注册流程的最佳方法,从而进一步改进 PHP 网站。
电子邮件验证非常重要。出于多种原因,确保网站注册的用户拥有有效的电子邮件地址至关重要:
- 当用户输入电子邮件地址时,可及时发现拼写错误,并在允许注册之前提示更正。
- 与用户随时保持联系:当他们的信用卡到期时、当他们收到收据时、当推出新功能时等,都可以向用户发送电子邮件。
- 可保证用户在忘记密码时安全地重置密码:如果没有电子邮件地址,除了手动、人工验证之外,没有其他方法可以验证某人的身份。
- 可防止用户使用一次性电子邮件地址(例如来自Mailinator的电子邮件地址)进行网站注册。注册这些服务的用户通常会出于特定原因试图避免提供他们的真实电子邮件:或许是想滥用网站的免费增值功能等。通过允许真实个人或公司电子邮件地址的用户注册,才能降低网站被滥用的风险。
然而,电子邮件验证复杂之处在于如何验证用户网站的电子邮件地址。每个网站都有不同的要求,根据其网站的功能,可能只通过一两种特定方式验证用户的电子邮件地址。
为了帮助解决这个问题,我们最近发布了电子邮件验证器Packagist 库。
该PHP 库可以用多种不同的方式轻松验证电子邮件地址,并提供灵活的验证(您稍后会看到)。
所以,话不多说,让我们来看看它是如何操作!
创建电子邮件验证帐户
使用电子邮件验证程序库验证电子邮件地址,第一件事是在此处为电子邮件验证 API 服务创建一个免费帐户:https: //emailverification.whoisxmlapi.com/signup
创建免费帐户后,用户将可使用 API 服务免费核验 1,000 个电子邮件地址。如果您还想核验更多,可随时支付少量的费用。
安装包
现在您的帐户已设置完毕,接下来是安装 PHP 包。从命令行运行以下命令:
$ composer require whois-api/email-verifier
这将从 Packagist 下载并安装最新版的电子邮件验证程序包。
验证电子邮件地址
现在您已经有了帐户并装了安装包,可以立即运行验证电子邮件地址的一些代码。
此为一个小脚本, verify.php
, which will verify an email address by using all possible
verification methods:
<?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('[email protected]', ['_hardRefresh']), true);
echo PHP_EOL;
} catch (\Throwable $exception) {
echo "Error: {$exception->getCode()} {$exception->getMessage()}" . PHP_EOL;
}
如所见,使用该库实际上只需三个步骤:
- 导入 Composer 的自动加载文件和库中的客户端构建器。
- ·
Api客户端
使用你在注册 API 服务时创建的 API 密钥来创建一个 ApiClient 对象。 - 运行该
GET
method, passing in the email address you want to verify, and an array with option which should be disabled. All available options are enabled by default. There is the list of available options:validateDNS
,validateSMTP
,checkCatchAll
,checkFree
,checkDisposable
,_hardRefresh
。这些选项的详细描述在我们的文档页面。 documentation page.
示例中打印的数据将如下所示:
WhoisApi\EmailVerifier\Models\Response Object
(
[emailAddress] => [email protected]
[formatCheck] => 1
[smtpCheck] => 1
[dnsCheck] => 1
[freeCheck] =>
[disposableCheck] =>
[catchAllCheck] => 1
[mxRecords] => Array
(
[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 Object
(
[auditCreatedDate] => Carbon\Carbon Object
(
[date] => 2018-09-21 15:52:51.000000
[timezone_type] => 3
[timezone] => UTC
)
[auditUpdatedDate] => Carbon\Carbon Object
(
[date] => 2018-09-21 15:52:51.000000
[timezone_type] => 3
[timezone] => UTC
)
)
)
disposableCheck
and freeCheck
have an invisible value false
(it is a
boolean type).
每个返回的对象值对应不同类型的验证:
- The
catchAllCheck
检查此电子邮件地址是否是“包罗万象”的地址。这是一种特殊类型的地址,可以接收任意数量的其他地址的电子邮件。这在企业中很常见,如果您向 [email protected] 发送一封电子邮件,并向 [email protected] 发送另一封电子邮件,那么这两封电子邮件都会进入同一个收件箱。 - The
disposableCheck
checks whether or not the email address is disposable (created via a service like Mailinator). This helps you check for abuse. This value will befalse
if the email is not disposable, andtrue
otherwise. - The
dnsCheck
检查电子邮件地址中的域名(例如:gmail.com)是否为有效域名。该值将是好的
if the domain is good. - The
freeCheck
option will check if the email address is from a free email provider like Gmail or not. This value will be 'false' if the email address is not free, andtrue
otherwise. - The
formatCheck
检查电子邮件地址中是否存在语法错误。这是一项基本检查,旨在捕获任何简单的拼写错误或重大错误。该值将是false
如无错误,且true
otherwise.
API 服务在幕后以多种有趣的方式为您处理所有这些类型的验证检查。我将在接下来的文章中进行介绍。
自定义电子邮件验证
正如我之前所提到的,上面的代码示例展示了如何使用所有可能的验证方法来进行电子邮件地址验证 - 但这可能并不是您想要的。
电子邮件验证可能很慢。每种类型的验证都只需要一小段时间(几分之一秒),当执行完所有检查后,时间会进行累积。
例如,如果您的网站只需要验证电子邮件地址以确保可以接收电子邮件,则可以将电子邮件验证程序包设置为仅执行该检查。电子邮件验证程序库非常灵活:用户可以启用或禁用任何想要检查的类型。
工作原理如下:
$client->get('[email protected]',
[
'_hardRefresh',
'validateSMTP',
...
]
)
GET
method, you can pass in array of disabled options (as shown above) which
directly impact what types of checks are performed. Feel free to use those as needed.
改善用户的注册流程
现在您已了解如何使用电子邮件验证器库来验证电子邮件地址,下一步则需要修改网站注册过程实现更便捷的使用。
方法相当简单。当用户填写并提交注册表时:
- 在网络服务器上接收表单数据
- 解析用户的注册数据,包括其电子邮件地址
- 使用电子邮件验证库立即验证用户的电子邮件地址
- 如果用户的电子邮件无效,则显示错误,提示用户重试
- 如果一切顺利,可创建用户的新帐户并登录
依照以上这些步骤,您可以在注册过程中及时发现用户的拼写错误,从而大大改善网站的注册流程。
总结
总而言之:验证用户的电子邮件地址可能是改善网站用户体验的简单方法。
如用户需要验证电子邮件地址,新的电子邮件验证器是完美的工具,因为它可以灵活处理许多不同类型的验证。
如果有任何疑问,请给我们发送电子邮件!