AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

メールアドレスの誤り検知

備忘録みたいなやつ。

メールアドレスの誤りを防ぎたい

基本的にメールアドレスはユーザに必須項目として入力させるんだけど、まあ世の中間違い (主に入力するユーザ側の思い込み起因) が多いので、これをどうにかしたい。

アプローチ

バリデーション

Web サービスなら採用しているフレームワークvalidation みたいなメソッドなりあると思うので、こいつで適当な正規表現で防いでやればいい。

正規表現はウェブ上に色々あるのだけど、最近助かったのは以下。

^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$

qiita.com

HTML5 の実装がこれらしく、だいたいこんな感じでいいんじゃないか? RFC 違反しててもそういうアドレスを許容してしまうサービスあるし。 太古のジャップキャリアメールとかですけど。

ホストチェック

これはググってて見つけたんだけど、入力されたメールアドレス (≒ドメイン) に送信可能か否かは、事前にルックアップしちまえよ、という話。

medium.com

見てて「はえーっ」ってなったんだけど、サジェスト出したり修正を促すならたしかにこれは有効だなあ、と思った。

ルックアップ時の遅延、みたいなのは入力フォームを disable にせず、テキストフィールドの下にローディングサークルとか出して「チェックしています」とか出力すれば、まあまあいいのではという気もするし、これはアリな気がする。

なぜこのような話を

「メール送信されねえんだけど!」というクソデカボイスのクレームが来てログチェックしてたら、local-part (ユーザ名) 部分ではなく、ドメイン+エイリアスを書いてて「ファッキューメーン……」となるなどしていた。

どういうこと

こんな感じになっていた。

example@example.com+alias

エイリアスはそこに付与するもんじゃねえ! という気持ちと、なぜこれを通過する正規表現を……いやまず誰がレビューしたの? という感じで愕然としていたのだった。