メールアドレス登録時に安心して使える文字列

追記

タイトルが少し誤解を招きそうなので本文とともに修正しておきました。

本エントリでは メールアドレス登録時に安心して使える文字列 を紹介していますが、本文中にも書いてある通り本来RFC的に使ってよい文字列は広範です。詳しくは下記エントリを参照してください。

「メールアドレスのルール」系まとめがそろって間違ってるのでご注意を - 若き JavaScripter の悩み


TL;DR

メールアドレスとして安心して使える使用可能文字は アルファベット、数字、-(ハイフン)、_(アンダースコア)、.(ドット)

Gmailのプラス付アドレス

メールアドレスのローカル部に使用できる記号について調べた。調べるきっかけはGmailの+(プラス)の入ったアドレスを使おうとしたこと。

Gmail が次のような仕様になっているからだ。

  • .(ドット/ピリオド) は無視される
  • +(プラス) から @ までは無視される

via. Gmail における .(ドット/ピリオド) と +(プラス) の扱いの不思議

上記のようなGmailの仕様から、例えば会員登録機能を開発したときに1つのGmailアカウントをとってそれを使い回せばテストするのにいろいろと便利なのです。myaddress+test1@gmail.commyaddress+test2@gmail.comという具合に。こうすることで1つのメールアドレスで1つのサービスに対して複数アカウントを登録できます。

プラス記号が使えなかった

ということで自分が作った会員登録機能でこのプラスアドレスを使おうと思ったが、どういうわけか不正なメールアドレスとして弾かれる。調べてみると、開発においてとあるバリデーションのライブラリを使用していたのだが、そのバリデーション機構が+の文字列を弾いているらしいことがわかった。

メールアドレスに + を使うと危ない件

え?プラスって使っちゃいけないのか? (タイトルだけ読んで判断したが、元記事はそんなことは全くいってません)

RFC的に使ってよい文字

RFC的にはどーなんだろうか。調べてみよう。

上記をまとめると、メールアドレスに使える文字は

アルファベット 数字 ! # $ % & ’ * + - / = ? ^ _ ` { | } ~ .

となります。.は先頭と最後には利用することができません。

via. メールアドレスで使える記号

つまりRFCでは下記の記号は使って良いとされており、RFCの仕様的には使える記号はけっこうある んです。

! # $ % & ’ * + - / = ? ^ _ ` { | } ~ .

リアルワールドで安心して使えそうな文字

しかし実際のところ同記事に書いてあるとおり、プロバイダ側で使える文字を制限している のが現実です。

メールでの利用やwebサイトに掲載の際に安心して利用できる文字種は以下の通り

  • アルファベットの大文字と小文字
  • 数字
  • -(ハイフン)
  • _(アンダーバー)
  • .(ピリオド)但し利用制限あり(@の直前は不可、連続しての利用も不可)

via. メールアドレスで使える記号

結局のところ安心して使えるのは上記の文字となるようです。

RFCは個人的にはネットワークにおける聖典、絶対的な価値基準だと思っていたけどそんなことはないようです。RFCをそもそも守らない大手通信キャリアさんもあったようですので1 まだRFCの基準の範囲内にあるだけよいのかもしれません。

まとめ

  • メールアドレスとして安心して使える使用可能文字はアルファベット、数字、-(ハイフン)、_(アンダースコア)、.(ドット)
  • RFC仕様的に使用可能な文字にもかかわらず、プロバイダや通信キャリアの制限などによって使えない場合もある
  1. RFC準拠ではないメールアドレスにメールを送ろうとする度にiPhoneのメールクライアントに宛先メールアドレスは不正なメールアドレスですと怒られる