メールアドレスのバリデーションはかなりめんどくさい。
複数のRFCがあるだけでなく、プロバイダーによって対応状況に差があるので完全な正解は存在しないといっても過言ではない。
今回はJavaで公開されているライブラリを使ってメールアドレスのバリデーションをする方法の書き溜め。
今回は「JMail」というライブラリを使用します。
JMailは正規表現を使わずにメールアドレスの検証を行うことを目的で作られたライブラリです。
下記のようなメリットが挙げられています。
- JMailは、正規表現がないこともあり、他のライブラリよりも平均して少なくとも2倍高速である。
- JMailは依存関係がなく、非常に軽量である。
- JMailはJava 8+用に構築されており、多くの便利なメソッドとデータ・アクセッサを提供している
使うためにはまずpom.xmlに下記を追加します。
1 2 3 4 5 6 |
<dependency> <groupid>com.sanctionco.jmail</groupid> <artifactid>jmail</artifactid> <version>1.6.2</version> </dependency> |
使い方は簡単で、JMailクラスのvalidate()関数を呼び出すだけです。
例えば、下記のような形です。booleanまたはEmailValidationResultクラスを返します。
1 |
JMail.validate("hogehoge@example.com"); |
簡単。
ちなみにバリデーションはかなり柔軟に指定できます。
RFCを考慮すると下記のように使うのが良いと思います。
1 2 3 4 5 6 |
EmailValidator validator = JMail.strictValidator().disallowObsoleteWhitespace(); if (validator.isValid(address)) { return true; } else { return false; } |
じゃあねー。