如何在 Python 中验证电子邮件地址
本文将引导用户使用最简单的方法来验证电子邮件地址并改进 Python 应用程序中用户的注册过程。
电子邮件验证非常重要。出于多种原因,确保网站注册的用户拥有有效的电子邮件地址至关重要:
- 当用户在注册时输入电子邮件地址时,可能及时发现拼写错误。
- 可与用户保持联系:可在用户信用卡过期时向他们发送收据,或有新功能时发送电子邮件,等。
- 确保用户在忘记密码时可以安全地重置密码:如果没有电子邮件地址,除了手动验证之外,就无法验证某人的身份。
- 可防止用户使用一次性电子邮件地址(例如来自Mailinator的电子邮件地址)注册网站。注册这些服务的用户通常会出于特定原因而不提供他们的真实电子邮件,如想滥用网站的免费增值功能等。通过允许真实个人或企业电子邮件地址的用户进行注册,可降低网站被滥用的风险。
然而,在考虑如何进行电子邮件验证时,会变得复杂。每个网站都有不同的要求,可根据网站的用途,采用一种或两种特定方式验证用户的电子邮件地址。
为帮助解决此问题,近日我们在 PyPi 包存储库上发布了电子邮件验证程序包。
此Python 库可以多种不同的方式轻松验证电子邮件地址,并提供灵活的验证(稍后将看到)。
所以,话不多说,让我们来看看它是如何操作!
创建电子邮件验证帐户
使用电子邮件验证程序库验证电子邮件地址,第一件事是在此处为电子邮件验证 API 服务创建一个免费帐户:https: //emailverification.whoisxmlapi.com/signup
免费帐户创建后,用户可使用 API 服务免费验证 1,000 个电子邮件地址。如果想验证更多,可随时支付少量费用。
安装包
帐户已设置完毕,接下来安装 Python 包。从命令行运行以下命令:
$ pip 安装电子邮件验证器
将从 PyPi 下载并安装最新版本的电子邮件验证程序包。
验证电子邮件地址
在拥有帐户并安装软件包后,可运行验证电子邮件地址的一些代码。
此为一个小脚本, 'verify.py'
,它将使用所有可能的方法来验证电子邮件地址:
from emailverifier import Client
from emailverifier import exceptions
client = Client('Your-api-key')
try:
data = client.get("[email protected]")
# If you get here, it means service returned HTTP error code
except exceptions.HttpException:
pass
# If you get here, it means you cannot connect to the service
except exceptions.GeneralException:
pass
# If you get here, it means you forgot to specify the API key
except exceptions.UndefinedVariableException:
pass
# If you get here, it means you specified invalid argument
# (options should be a dictionary)
except exceptions.InvalidArgumentException:
pass
except:
pass
# Something else happened related.Maybe you hit CTRL - C
# while the program was running, the kernel is killing your process, or
# something else all together.
print(data)
# Use data.json_string to get raw data in JSON.
# You can access any response field as a class property
# by converting field name from "camelCase" to "snake_case"
print("Email address: " + data.email_address)
print("Format: " + str(data.format_check))
print("DNS: " + str(data.dns_check))
print("SMTP: " + str(data.smtp_check))
print("Catch all: " + str(data.catch_all_check))
print("Disposable: " + str(data.disposable_check))
print("Free: " + str(data.free_check))
print("Last audit date: " + str(data.audit.audit_updated_date))
如所示,使用该资料库只需三个步骤:
- 导入
‘Client’
从软件包中导入“客户端”类别及异常。 - ·
‘Client'
对象,并提供API 密钥。 - 运行该
'get'
方法,导入验证的电子邮件地址,包含选项及其值的字典。可用选项的列表:validateDNS
,validateSMTP
,checkCatchAll
,checkFree
,checkDisposable
,_hardRefresh
。这些选项的详细描述在我们的文档页面。 documentation page.
示例中打印的数据将如下所示:
{
"emailAddress": "[email protected]",
"formatCheck": "true",
"smtpCheck": "true",
"dnsCheck": "true",
"freeCheck": "false",
"disposableCheck": "false",
"catchAllCheck": "true",
"mxRecords": [
"ALT1.ASPMX.L.GOOGLE.com",
"ALT2.ASPMX.L.GOOGLE.com",
"ASPMX.L.GOOGLE.com",
"ASPMX2.GOOGLEMAIL.com",
"ASPMX3.GOOGLEMAIL.com"
],
"audit": {
"auditCreatedDate": "2018-04-19 18:12:45.000 UTC",
"auditUpdatedDate": "2018-04-19 18:12:45.000 UTC"
}
}
Email address: [email protected]
Format: True
DNS: True
SMTP: True
Catch all: True
Disposable: False
Free: False
Last audit date: 2018-04-19 18:12:45
每个返回的对象值对应不同类型的验证:
- 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
选项将查验电子邮件地址是否来自 Gmail 等免费电子邮件提供商。该值将是'false'
如果电子邮件地址不是免费的,并且true
otherwise. - The
formatCheck
检查电子邮件地址中是否存在语法错误。这是一项基本检查,旨在捕获任何简单的拼写错误或重大错误。该值将是false
如无错误,且true
otherwise.
API 服务在幕后以多种有趣的方式为您处理所有这些类型的验证检查。我将在接下来的文章中进行介绍。
自定义电子邮件验证
正如之前提到的,上面的代码示例展示了所有可能的用来验证电子邮件地址的方法,但这可能并不是用户所需。
电子邮件验证可能会很慢。每种类型的验证都需要很短的时间(几分之一秒),但是当执行所有检查时,该时间会累加起来。
例如,如果网站只需要验证电子邮件地址以确保可接收电子邮件,可通过电子邮件验证程序包仅执行该核验。电子邮件验证程序库非常灵活:可启用或禁用任何类型的核验。
工作原理如下:
client.get("[email protected]", {
'validateSMTP': 0,
'_hardRefresh': 1,
#. . . .
})
'get'
当执行方法中,您可以使用带有选项的字典(如上所示),这些选项直接影响执行的检查类型。请根据需要使用。
改善用户的注册流程
现在您已经了解了如何使用电子邮件验证器库验证电子邮件地址,您可通过修改网站注册流程以实现优化使用。
最佳方法相当简单。当用户填写并提交注册表时,应:
- 在网络服务器上接收表单数据
- 解析用户的注册数据,包括其电子邮件地址
- 使用电子邮件验证库立即验证用户的电子邮件地址
- 如果用户的电子邮件无效,则显示错误,提示用户重试
- 如果一切顺利,可创建用户的新帐户并登录
执行这些步骤,用户可以在注册过程中及早发现拼写错误,从而大大改善网站的注册流程。
总结
总而言之:验证用户的电子邮件地址可能是改善网站用户体验的简单方法。
如用户需要验证电子邮件地址,新的电子邮件验证器是完美的工具,因为它可以灵活处理许多不同类型的验证。
如果有任何疑问,请给我们发送电子邮件!