Flask | 開発者向けライブラリ | Email Verification API | WhoisXML API

FlaskのEmail Verificationクライアントライブラリ FlaskのEmail Verificationクライアントライブラリ

Flaskでメールアドレスを認証する方法

Flaskを使ってウェブサイト(またはAPI)を構築している場合、ユーザーのメールアドレスを認証すると良いでしょう。通常、認証のプロセスにはメールアドレスの情報の取得が含まれますが、これは単純なことではありません。

メールアドレスを対応付ける公開データベースがないため、特定のメールプロバイダーが十分に信頼されているかどうか、あるいは特定のユーザーがそのサービスに存在しているかどうかさえ確認できません。ほとんどの企業は、確認メールを送信することによってユーザーのメールを認証します。しかし、この方法には、存在しないメールアドレスをユーザーが指定している場合にメールがバウンスするという大きな弱点があります。

通常、メールアドレスの認証には以下のような情報が必要です:

  • メールアドレスのフォーマットの妥当性
  • 使い捨てメールアドレスに含まれているドメイン名のブラックリスト
  • ドメイン部分のDNSレコードのチェック結果
  • サーバーへのSMTP接続のチェック結果
  • そのドメインのメールボックスが無料かどうか

このように、メールアドレスを適切に認証するためには、多くの手順を踏まなければなりません。

今日は、Flaskでメール認証リクエストを簡単に実行できる、非常にシンプルなFlask-EmailVerifierデベロッパーライブラリの使い方を説明します。

Email Verification APIアカウントの作成

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

Email Verification APIは、最大かつ最も安価なメールアドレスデータサービスの1つです。 Email Verification APIがあれば、毎月1,000件の無料メール認証クエリを実行できます。 または、毎月100,000クエリに対して$49の定額プランもご用意しています。追加料金プランの詳細につきましては、こちらをご参照ください。

Email Verification APIアカウントを作成してログインした後、あなたのアカウントの商品ページを表示し、APIキーをコピーしてください。後でメール認証リクエストを出す際に必要になります。

Flask-EmailVerifierパッケージをインストールする

アカウントのセットアップ後、次にFlask-EmailVerifierのPyPiライブラリをインストールします。プロジェクトのルートで、コマンドラインから以下のコマンドを実行します:

            
$ pip install Flask-EmailVerifier
            
            

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

Flask-EmailVerifierによるメール認証リクエストの実行

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

以下は、'/email/<email>'という単一のエンドポイントのみを含むシンプルなFlaskアプリです。これは、APIリクエストの結果を含むシンプルな応答を返します:

            
from flask import Flask, make_response
from flask_email_verifier import EmailVerifier
from json import dumps, loads

app = Flask(__name__)
# Initialize the extension
verifier = EmailVerifier(app)

@app.route('/email/<email>')
def email(email):
    # Retrieve an info for the given email address
    email_address_info = verifier.verify(email)
if email_address_info is not None:
    data = dumps(loads(email_address_info.json_string), indent=4)
    resp = make_response(data, 200)
    resp.headers['Content-Type'] = 'application/json'
else:
    resp = make_response('None', 404)
    return resp
            
            

当社のシンプルなアプリケーションを実行する前に、以下のステップを踏む必要があります。

  •   'FLASK_APP' という環境変数を指定する ( export FLASK_APP=app.py)
  •   'EMAIL_VERIFIER_KEY' という環境変数をAPIキーで指定する( export EMAIL_VERIFIER_KEY=’your-api-key)

このコードを 'app.py' ファイル内で実行すると、test.email@gmail.comについての情報を含むJSON応答が表示されるはずです。ブラウザで '/test/test.email@gmail.com' というエンドポイントにアクセスしてみてください。

この新しいサーバーを起動し、ブラウザで '/email/test.email@gmail.com' というURLにアクセスすると、次のような新しい応答が表示されます:

            
{
    "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"
    }
}
            
            

ご覧の通り、応答のデータオブジェクトには全てのメールデータが含まれています。応答オブジェクトには、指定されたメールアドレスについて知る必要がある全ての情報が収録されます。

Flask-EmailVerifierのまとめ

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

詳細につきましては、GitHubのFlask-EmailVerifierライブラリでご確認ください:https://github.com/whois-api-llc/flask-email-verification

ご質問がございましたら、こちらにメールでお問い合わせください。