メールアドレスに使用できる文字は何ですか?

私は完全なメール検証を求めているわけではありません。

ただ、メールアドレスの user-nameserver の部分に使用できる文字を知りたいだけです。これは単純化しすぎているかもしれませんし、もしかしたらメールアドレスは別の形をしているかもしれませんが、私は気にしません。私が尋ねているのは、この単純な形式だけです。user-name@server` (例: wild.wezyr@best-server-ever.com)と、両方の部分に使用できる文字。

ソリューション

RFC 5322: Internet Message Format]1や、RFC 5321: Simple Mail Transfer Protocolなどを参照してください。

RFC 822でも電子メールアドレスを扱っていますが、ほとんどがその構造に関するものです。

 addr-spec   =  local-part "@" domain        ; global address     
 local-part  =  word *("." word)             ; uninterpreted
                                             ; case-preserved

 domain      =  sub-domain *("." sub-domain)     
 sub-domain  =  domain-ref / domain-literal     
 domain-ref  =  atom                         ; symbolic reference

また、いつものようにWikipediaにはちゃんとしたarticle on email addressesがあります。

電子メールアドレスのローカルパートは、以下のASCII文字のいずれかを使用できます。

  • 大文字および小文字のラテン文字 A から Z および a から z
  • 数字の 0 から 9 まで。
  • 特殊文字 !#$%&'*+-/=?^_`{|}~;
  • ドット . は、引用されていない限り最初の文字でも最後の文字でもなく、また引用されていない限り連続して現れないことが条件となります(例: John..Doe@example.com は許されませんが、"John..Doe"@example.com は許されます)。
  • スペースおよび "(),:;@[\] の文字は制限付きで使用できます (これらの文字は後述の引用文字列の中でのみ使用でき、さらにバックスラッシュまたはダブルクォートの前にはバックスラッシュを付ける必要があります)。 例えば、john.smith(comment)@example.com(comment)john.smith@example.com は、どちらも john.smith@example.com と同等です。

ASCII文字に加えて、2012年現在国際的な上記の文字U+007Fを使用することができます。これはRFC 6532仕様に記載されているUTF-8としてエンコードされ、Wikipediaで説明されています。 なお、2019年現在、これらの規格はまだProposedと表示されていますが、徐々にロールアウトされています。 この仕様の変更点は、基本的に国際文字を有効な英数字(atext)として追加したもので、許可された&制限された特殊文字(!#@:など)のルールには影響を与えていません。

検証については、Using a regular expression to validate an email addressをご覧ください。

ドメイン`の部分は[以下のように]定義されています6

インターネットのプロトコル標準(Request for Comments)では、コンポーネントのホスト名ラベルには、ASCII文字の az (大文字小文字を区別しない)、数字の 09、およびハイフン(-)のみを含めることが義務付けられています。RFC 952]7のホスト名のオリジナルの仕様では、ラベルは数字やハイフンで始まってはならず、ハイフンで終わってはならないと定められていました。しかし、その後の仕様(RFC 1123)では、ホスト名のラベルが数字で始まることを認めています。その他の記号、句読点、空白文字は使用できません。

解説 (18)

ウィキペディアには良い記事があります公式仕様書はこちらですとなっています。Wikipdiaより。

電子メールアドレスのローカルパートには、以下のASCII文字のいずれかを使用できます。

  • 大文字および小文字の英字(a-z, A-Z)
  • 0~9の数字
  • 文字 !# $ % & ' * + - / = ?^ _ ` { | }~
  • 文字 .(ドット、ピリオド、フルストップ)は、最初と最後の文字ではなく、2回以上連続して現れないことを条件とします。

また、引用符付きの文字列(例:"John Doe"@example.com)も許可されており、本来は禁止されている文字を使用することができますが、一般的には使用されていません。また、RFC 5321では、"メールの受信を期待するホストは、Local-partがQuoted-string形式を必要とする(または使用する)メールボックスを定義することを避けるべきであると警告しています"。

解説 (3)

wikipediaの記事]1から始めることができます。

  • 大文字と小文字の英字(a-z, A-Z)
  • 数字(0~9
  • 文字 !# $ % & ' * + - / = ?^ _ ` { | }~
  • 文字(ドット、ピリオド、フルストップ)は、最初と最後の文字ではなく、また2回以上連続して現れないことを条件とします。
解説 (0)