概要
gmailの特殊な仕様と複数アカウント対策をまとめます。
前提知識
WEBメールの仕様として、メールアドレス以下のような構成になっています。
ユーザー名@ホスト名
gmailの仕様
以下のメールアドレス送信したメールは、gmailの仕様により**example@gamil.com
**に届きます。
-
- ユーザー名の大文字小文字は区別されない
EXAMPLE@gmail.com
-
- ユーザー名のエイリアスが使える(+から後ろ)
example+qiita@gmail.com
-
- ドットは無視される
ex.am.ple@gamil.com
-
- ホスト名は、"gmail.com" "googlemail.com"はどちらも使える
example@googlemail.com
- 要するに
こんなメールアドレスでも送信先は同じです
E.x.A.m.P.l.E+qiita@googlemail.com
問題点
どんなメールアドレスでも登録できてしまうサービスを作ってしまうと
1つのメールアドレスで複数のアカウントが作れてしまいます。
対策
ユニークなアドレスをチェックすることで対策します。
以下のコードは、gmailだけチェックするようになっています。
python3
#!/usr/bin/env python3
# coding: utf-8
import re
# メールアドレスを指定
mail_address = 'E.x.A.m.P.l.E+qiita@googlemail.com'
# メールアドレスを分解
user_name,host_name = mail_address.split('@')
# メールアドレス変換処理
if host_name in ['gmail.com','googlemail.com']:
user_name = user_name.lower() # 小文字に変換
user_name = re.sub('\\.', '', user_name) # .を削除
user_name = re.sub('\\+.*', '', user_name) # +エイリアスを削除
host_name = 'gmail.com' # gmail.comに統一
# ユニークなアドレスを特定
unique_gmail = user_name+'@'+host_name
print(unique_gmail) # example@gamil.com
# メールアドレスのチェック
# (ここに処理)