如何在 Express.js 中验证电子邮件地址
如果您正在使用Express.js构建网站(或 API),验证用户的电子邮件地址是否真实是非常必要的。验证过程通常包括查验黑名单中的电子邮件,以及检查建立至邮件服务器的 SMTP 连接。可惜这个过程并不简单。
验证电子邮件地址并不容易,需回答大量问题。如,用户需要检查电子邮件地址的主机部分。是真实域名吗?是否有 DNS 记录,能否连接到 DNS 记录中指定的 IP?是否可设置 SMTP 连接?该服务是否提供一次性电子邮件地址?只需向电子邮件验证 API发出一次请求即可获得所有这些问题的答案。
今天,我将带您了解集成的电子邮件验证器开发人员库示例。
创建电子邮件验证 API 查询帐户
使用电子邮件验证程序库,第一件事是创建一个免费的电子邮件验证 API 帐户:https: //emailverification.whoisxmlapi.com/signup 。
电子邮件验证 API 是最好且最便宜的电子邮件验证服务之一。用户使用电子邮件验证 API 服务可每月免费进行1,000 次查询,也可以每月支付 9 美元的固定费用查询10,000次。其他资费标准可点击此处获取。
创建并登录电子邮件验证 API 帐户后,查看帐户的产品页面并复制 API 密钥,并使用该密钥进行查询。
安装电子邮件验证程序包
帐户设置完毕,随后需要做的是安装邮件验证器的 NPM 库。从命令行运行以下命令:
$ npm install email-verifier
将从 NPM 下载并安装最新版本的电子邮件验证程序包。
使用电子邮件验证器执行电子邮件验证请求
在安装完帐户和电子邮件验证程序包后,可运行验证用户电子邮件地址的一些代码。
Here’s a simple Express.js app that only contains a single endpoint, /users
, which returns a simple
hello world response:
const express = require('express');
const usersRouter = require('./routes/users');
const app = express();
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.use('/users', usersRouter);
app.listen(3000);
You need to put this code into a app.js
file and before you can run it, you
create a folder “routes” and inside it place the users.js
file which will contain the following
code.
const express = require('express');
const router = express.Router();
const verifier = new(require('email-verifier'))("Your-api-key");
router.post('/', function(req, res, next) {
verifier.verify(req.body.email, (err, data) => {
if (err) {
console.error(err);
return res
.status(500)
.send({
message: 'Internal error'
});
}
console.log(data);
if (data.formatCheck === 'true' &&
data.disposableCheck === 'false' &&
data.dnsCheck === ’true’ &&
data.smtpCheck !== 'false'
) {
return res.send({
saved: true
});
}
return res
.status(400)
.send({
message: 'Invalid or disposable email.'
});
});
});
module.exports = router;
The const verifier = new (require('email-verifier'))("Your-api-key");
line initializes the
EmailVerifier class. Now you can use verifier.verify()
method in your app. In the code above this
method is called when the app receives a POST /users
request. The verifier.verify(req.body.email, (err, data) => {
line illustrates a verify
method call. We assume that req.body.email
contains
an email address from the user input, so we want to verify it. The callback function has 2
arguments: err
and 数据
. If the first one isn’t null
, it means that something went wrong. The
second argument is a result of the API call. In the following lines we check if the email has a
valid format, if the host has DNS records, if the mail server refuses SMTP connection and if the
host provides disposable email addresses.
The 数据
参数可以存储这样的 JavaScript 对象:
{
"emailAddress": "[email protected]",
"formatCheck": "true",
"smtpCheck": "false",
"dnsCheck": "true",
"freeCheck": "true",
"disposableCheck": "false",
"catchAllCheck": "false",
"mxRecords": [
"alt3.gmail-smtp-in.l.google.com",
"alt1.gmail-smtp-in.l.google.com",
"alt2.gmail-smtp-in.l.google.com",
"alt4.gmail-smtp-in.l.google.com",
"gmail-smtp-in.l.google.com"
],
"audit": {
"auditCreatedDate": "2018-11-14 13:05:09.000 UTC",
"auditUpdatedDate": "2018-11-14 13:05:09.000 UTC"
}
}
电子邮件验证器总结
验证电子邮件地址可能很棘手,但电子邮件验证器与电子邮件验证 API相结合使其变得简单且便宜。使用新的电子邮件验证器库,可以轻松地为最大的企业站点构建和管理电子邮件地址验证。
要了解更多信息,请查看 GitHub 上的电子邮件验证程序库,您可以在其中找到所有文档和更深入的信息:https: //github.com/whois-api-llc/email-verifier
如果有任何疑问,请给我们发送电子邮件!