Express.js | 開発者向けライブラリ | Email Verification API | WhoisXML API

Express.jsのEmail Verificationクライアントライブラリ Express.jsのEmail Verificationクライアントライブラリ

Express.jsでメールアドレスを認証する方法

Express.jsを使ってウェブサイト(またはAPI)を構築する際には、ユーザーのメールアドレスを認証し、それが使い捨てでなく本物かどうかを確認すると良いでしょう。一般的に認証のプロセスにはブラックリストに登録されているメールアドレスのチェック、メールサーバーへのSMTP接続可否のチェックなどがあります。とはいえ、メールアドレスの認証は簡単なことではありません。

なぜなら、多くの質問に答えなければならないからです。認証にあたっては、メールアドレスのホスト部分をチェックする必要があります。ドメイン名は本物か?DNSレコードがあり、DNSレコードで指定されたIPアドレスに接続できるか?SMTP接続は設定できるか?使い捨てメールアドレスのサービスを使っているか?などなど。しかし、Email Verification APIにリクエストを1回出すだけで、これら全ての質問に対する答えを得ることができます。

ここでは、開発者向けのemail-verifierライブラリを簡単に統合できる方法を説明します。

Email Verification API Lookupアカウントを作成する

email-verifierライブラリを使ってメールアドレスを検証するには、まずこちらでEmail Verification APIサービスの無料アカウントを作成する必要があります:https://emailverification.whoisxmlapi.com/signup

Email Verification APIは、安価で優れたメール認証サービスです。毎月1,000クエリまで無料になります。または10,000クエリで月額$9の定額サービスもご利用いただけます。その他の料金プランはこちらでご確認ください。

Email Verification APIアカウントを作成してログイン後、アカウントのプロダクトページを表示し、クエリを出す際に必要となるAPIキーをコピーしてください。

Email Verifierパッケージをインストールする

アカウントのセットアップ後、次にemail verifier NPMライブラリをインストールします。コマンドラインから以下のコマンドを実行してください:

            
$ npm install email-verifier
            
            

これにより、NPMから最新リリースのemail-verifierパッケージがダウンロードおよびインストールされます。

Email Verifierによるメール認証リクエストの実行

アカウントとemail-verifierパッケージの両方がインストールされたところで、ユーザーのメールアドレスを認証するために実行できるコードを見てみましょう。

以下は、 /usersという単一のエンドポイントのみを含むシンプルなExpress.jsアプリケーションです。以下の簡単な応答を返します:

            
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);
            
            

このコードを app.js ファイルに記入し、実行前に"routes "というフォルダを作り、その中に users.js ファイルを入れます。このファイルには、以下のコードが含まれます:

                    
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;
                    
                

この const verifier = new (require('email-verifier'))("Your-api-key"); 行はEmailVerifierクラスを初期化します。これで verifier.verify() アプリ内でメソッドを呼び出すことができます。上のコードではアプリがリクエストを受け取ると POST /users が呼び出されます。この verifier.verify(req.body.email, (err, data) => { 行は verify メソッド呼び出しを説明するものです。ユーザーの req.body.email 入力からのメールアドレスが含まれていると仮定しますので、それを認証します。コールバック関数には次の2つの引数があります: err および data。1つ目の引数が nullでない場合、何かが間違っていたことを意味します。2番目の引数はAPIコールの結果です。以下の行では、メールのフォーマットが有効なものかどうか、ホストにDNSレコードがあるかどうか、メールサーバーがSMTP接続を拒否しているかどうか、ホストが使い捨てメールアドレスを提供しているかどうかをチェックします。

この data 引数には、次のようなJavaScriptオブジェクトを格納することができます:

            
{
    "emailAddress": "test.email@gmail.com",
    "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"
    }
}
            
            

Email Verifierのまとめ

メールアドレスの検証は厄介なものですが、email-verifierEmail Verification APIサービスを組み合わせて使うことで、簡単かつ安価に認証が実現します。新しいemail-verifierライブラリがあれば、大規模な企業サイトでも、メールアドレス認証を簡単に構築・管理できます。

詳細につきましては、GitHubのemail-verifierライブラリをご参照ください: https://github.com/whois-api-llc/email-verifier

ご不明な点がございましたら、こちらまでお気軽にお問い合わせください。