3
0

More than 1 year has passed since last update.

メールアドレスの長さのバリデーションをかける

Posted at

メールに最大長はあるのか?

  • メールアドレスの長さは254文字を超えてはならない
  • RFC5321などを見ればメールアドレスは320文字まで許容できそうだが、RFC2821のメール送信プロトコルの仕様からは、区切り文字も含めて256文字以内となっている。区切り文字も含めるということは、キャリッジリターンとラインフォールドも含めていうことなので、実質、メールアドレスとして許容できるのは、254文字までとなる。

出典

  • ユーザ名は64文字まで、ドメイン名は255文字まで、ユーザー名+ドメインなどを含めた全体は256文字まで、となってます」とのこと。

すなわち@の前が最大64文字、@の後が255文字、合わせて256文字までということ。こりゃ長すぎる。おそらく名刺の半分ぐらいがアルファベットでうまってしまいそうである。
しかし実際に超長いアドレスを使おうとしても、ソフトによってはうまく動かない可能性もあるそうなのでお気を付けを。

ちなみに日本の携帯電話メアドについてはNTTドコモ、au、ソフトバンクモバイルとも@の前が最大30文字まで、ウィルコムは20文字まで、となっている。

出典

  • ドメインの長さの最大値は255文字、メールアドレス全体の長さの最大値は256文字である[5]。
    の部分なのですが、254文字が正しいです。 資料は同じ[5]、つまりRFC 5321です。

出典

  • ドメイン名の構成
    ドメイン名は、以下のように表示されます。(下線の部分がドメイン名)
    電子メールアドレスの場合
    taro@example.co.jp
    ウェブアドレスの場合
    www.example.co.jp
    ピリオド(.)で区切られた部分は「ラベル」と呼ばれます。
    一つのラベルの長さは63文字以下ドメイン名全体の長さは、 ピリオドを含めて253文字以下でなければなりません。※1
    ラベルには、英字(A~Z)、数字(0~9)、 ハイフン( - )が使用できます(ラベルの先頭と末尾の文字をハイフンとするのは不可)。
    ラベル中では大文字・小文字の区別はなく、 同じ文字とみなされます

    ただし、 国際化ドメイン名(IDN; Internationalized Domain Name)と呼ばれるドメイン名では、 上記以外のさまざまな文字が使用できます。
    例えば、「ジェーピーニック.jp」などの日本語JPドメイン名の場合は、 上記に加えて全角ひらがな、カタカナ、漢字なども使用できます。 また、1つのラベルの長さは15文字以下となります。※2

    ドメイン名を構成する最も右側のラベルを「トップレベルドメイン」と呼び、 以下左へ順に「第2レベルドメイン」、 「第3レベルドメイン」、……と呼びます。

出典

結論

一応 最大長は254にしようと思う。

早速実践

validates :email, {presence: true, length: { maximum: 254}, uniqueness: true}

感想

多分あってないと思うけど一応書いた。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0