備忘録みたいなやつ。
メールアドレスの誤りを防ぎたい
基本的にメールアドレスはユーザに必須項目として入力させるんだけど、まあ世の中間違い (主に入力するユーザ側の思い込み起因) が多いので、これをどうにかしたい。
アプローチ
バリデーション
Web サービスなら採用しているフレームワークで validation
みたいなメソッドなりあると思うので、こいつで適当な正規表現で防いでやればいい。
正規表現はウェブ上に色々あるのだけど、最近助かったのは以下。
^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$
HTML5 の実装がこれらしく、だいたいこんな感じでいいんじゃないか? RFC 違反しててもそういうアドレスを許容してしまうサービスあるし。 太古のジャップキャリアメールとかですけど。
ホストチェック
これはググってて見つけたんだけど、入力されたメールアドレス (≒ドメイン) に送信可能か否かは、事前にルックアップしちまえよ、という話。
見てて「はえーっ」ってなったんだけど、サジェスト出したり修正を促すならたしかにこれは有効だなあ、と思った。
ルックアップ時の遅延、みたいなのは入力フォームを disable にせず、テキストフィールドの下にローディングサークルとか出して「チェックしています」とか出力すれば、まあまあいいのではという気もするし、これはアリな気がする。
なぜこのような話を
「メール送信されねえんだけど!」というクソデカボイスのクレームが来てログチェックしてたら、local-part (ユーザ名) 部分ではなく、ドメインに +
でエイリアスを書いてて「ファッキューメーン……」となるなどしていた。
どういうこと
こんな感じになっていた。
example@example.com+alias
エイリアスはそこに付与するもんじゃねえ! という気持ちと、なぜこれを通過する正規表現を……いやまず誰がレビューしたの? という感じで愕然としていたのだった。