メニュー

メールアドレスの形式と文字数の上限を知る

メールアドレスの形式は記号で前半と後半に分かれ、それぞれに長さの上限があります。標準が認める書き方と、実際のサービスが受け付けない書き方の違いを整理して確認できます。

公開日

  • 形式
  • バリデーション

メールアドレスの形式は、思っているより単純で、そして思っているより広いです。本記事では、記号ひとつで前半と後半に分かれるという基本から始め、長さの上限と、標準が認めているのに実際には通らない書き方を整理します。読み終えると、入力欄の検証をどこまで厳しくすべきかが判断できます。

メールアドレスは何でできているのか

アドレスは記号ひとつで二つに分かれます。前半は利用者を識別する部分、後半はドメインです。この二つを合わせて一つの宛先になります。前半と後半は別々の規則を持っていて、長さの上限も別々に決まっています。

ここで覚えておきたいのは、後半は必ずしも企業の名前である必要はないという点です。標準の文法では、角かっこで囲んだ数値の形も認められています。ただし、実際の登録画面でこれが通ることはほとんどありません。

長さの上限はどこで決まっているのか?

公開された標準では、前半が最大で数十バイト、後半がより大きな上限、全体でもう少し大きな上限、という三段構えになっています。具体的には、前半は六十台半ば、後半は二百五十台、全体では二百五十台の後ろのほう、という値です。

ここで大切なのは、単位が文字数ではなくバイト数だという点です。日本語やアクセント記号を含む文字は、一文字で複数バイトを占めます。見た目の文字数が少なくても、上限に近づくことがあります。

さらに、現実のサービスは標準より狭く受け取るのが普通です。全体の長さを標準の上限より少し短く切る実装は、広く見られる慣行です。これは標準の値ではなく、実装側の判断です。つまり「標準で許されている長さ」と「そのサービスが受け取る長さ」は別物です。

標準が認めても通らない書き方とは?

標準の文法は、ふだん見かけない書き方をいくつも認めています。代表的なものを挙げます。

  • 引用符で囲んだ前半。空白や記号を含められます。
  • 丸かっこで囲んだ注釈。表示用の補足として扱われます。
  • 角かっこで囲んだ数値のドメイン。
  • 国際化の拡張を使った非 ASCII 文字の前半。

いずれも、実際の登録画面では弾かれることが多いものです。したがって、標準に照らして正しいかどうかと、そのサービスが受け付けるかどうかは、別々に考える必要があります。この二つを混同すると、本来通るはずのアドレスを自分で弾いてしまいます。

厳しすぎる検証が生む問題

入力欄の検証を厳しくしすぎると、正しいアドレスを誤って拒否します。とくに起きやすいのは次の三つです。

  • 記号の並びを独自の規則で禁止し、標準で許された形を弾く。
  • 後半にドットが二つ続く形を一律に拒否する。標準では認められていませんが、判定の書き方を誤ると別の形まで巻き込みます。
  • 大文字を一律に無効とみなす。前半の大文字と小文字は区別される建前ですが、実際には区別しない運用が広く行われています。

いずれも、利用者から見ると「正しいアドレスなのに入れられない」という体験になります。検証の目的は、明らかな誤入力を早く知らせることであって、珍しい形を排除することではありません。

長いアドレスはどこで問題になるのか

上限に近いアドレスは、入力欄そのものより後ろの工程で問題を起こします。一覧の表示幅、ログへの記録、外部の連携先へ渡すときの切り詰め。どれも、長さを想定していない場所で起きます。

とくに、外部へ渡すときに途中で切られる事故は見つけにくいです。切られた先でも形式としては成立してしまうことがあるため、エラーにならず、別の宛先へ送られる形で表面化します。長さの上限を決めるときは、入力欄だけでなく、値を扱うすべての場所を並べて、最も短い制限に合わせてください。

開発者向け: 検証と保存の設計

まず、判定の強さを段階に分けます。形式として明らかにおかしいものだけをその場で止め、それ以外は受け付けます。本当に有効かどうかは、確認メールを送って確かめるのが確実です。入力の時点で完全な判定はできません。

次に、長さの上限を項目の設計に反映します。前半と後半で別々の上限を持たせ、標準の値を超えないようにします。データベースの列の長さを、標準の上限より小さく取ると、あとで困ります。余裕を持たせてください。

第三に、非 ASCII 文字の扱いです。受け付けるかどうかを機能の設定として持ち、保存する形を統一します。同じ利用者が二つの書き方で登録できてしまうと、あとから同一人物だと判定できません。ここは、受け付けるか受け付けないかのどちらかに寄せてください。

第四に、前後の空白の扱いです。貼り付けのときに空白が混ざることはよくあります。保存の前に取り除くのか、それとも入力をそのまま扱うのかを決め、確認の送信から保存まで同じ規則を通してください。途中の段階ごとに扱いが違うと、原因の分からない不一致が生まれます。

第五に、大文字と小文字の扱いです。標準では前半は区別されますが、実際の運用では区別しないことが多いです。どちらにするかを決め、比較する場所すべてで同じ規則を使います。ここが揃っていないと、ログインできない利用者が生まれます。

次のステップ

手元の入力検証を開き、拒否している条件を一つずつ標準と照らし合わせてください。標準で許されているものを弾いている条件があれば、それが最初に直すべき箇所です。あわせて、長さの上限が前半と後半で分かれているかを確認します。

一時的な宛先の形式を確かめたいときは使い捨てメールのツールで実際に発行できます。標準と実装のずれという同じ論点は一時メールと別名アドレスの違いでも扱っています。国の識別番号の形式を確かめる考え方はマイナンバーの検査数字の読み方が参考になります。

続けて読む

使い捨てメール(一時メール・10分メール)の関連記事