web-dev-qa-db-ja.com

メールアドレスに英数字以外の文字を含めることは許可されていますか?

Djangoを使用してWebサイトを構築しています。このウェブサイトには、英語圏以外の国からのかなりの数のユーザーがいる可能性があります。

メールアドレスに含めることができる文字の種類に技術的な制限があるかどうかを知りたいだけです。

メールアドレスには、英字、数字、_@、および.のみを含めることができますか?

éüなどの英語以外のアルファベットを含めることは許可されていますか?

中国語、日本語、またはその他のUnicode文字を含めることは許可されていますか?

58
Continuation

メールアドレス 2つの部分で構成されます @の前のlocaldomainの後に続きます。

これらの部分のルールは異なります。

_local part_には、ASCIIを使用できます。

  • ラテン文字A-Z a-z
  • 0から9桁
  • 特殊文字!#$%& '* +-/ =?^ _ `{|}〜
  • ドット。、それが最初でも最後でもなく、連続していないこと
  • スペースと「()、:; <> @ []文字は制限付きで許可されます(これらは引用符付き文字列内でのみ許可されます。円記号または二重引用符の前には円記号が必要です)
  • 2012年以降のプラス インターナショナルを使用できます 上記の文字 _U+007F_、エンコード TF-8として .

_Domain part_はより制限されています:

  • ラテン文字A-Z a-z
  • 0から9桁
  • ハイフン-最初でも最後でもない、連続した複数のハイフンが許可されます。

検証する正規表現

^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})

これで時間を節約できることを願っています。

40

はい、そうです。 (少なくとも) this Wikipediaの記事を読んでください。

私はアルゼンチンに住んでいますが、ñoñó1234@ server.comのようなメールが許可されています

36
eKek0

電子メールアドレスで許可される構文は RFC 3696 で説明されており、かなり複雑です。

正確なルール[ローカルパーツ。 「@」の前の部分は、任意のASCII文字が引用符で囲まれている、または引用符で囲まれた文字列で表示される場合があることです。引用符が必要な場合、次のキャラクター
[...]
ローカル部分は、引用符なしで、アルファベット文字、数字、または特殊文字の任意の組み合わせで構成できます! #$%& '* +-/ =? ^ _ `。 {| }〜
[...]
任意の文字、またはビットの組み合わせ(オクテットとして)は、DNS名で許可されます。ただし、ほとんどのアプリケーションに必要な優先形式があります...

...など、ある程度の深さで。

17

メールアドレスに含めることができるものとできないものを心配するのではなく、本当に気にしないので、セットアップでメールを送信できるかどうかをテストします。これが本当に大切なことです。これは、実際に確認メールを送信することを意味します。

そうしないと、考案した任意の文字セット内にとどまる偶発的なタイプミスのはるかに一般的なケースをキャッチできません。 (クイック:[email protected]はあなたのサイトで使用するための有効なアドレスですか、それともそうではありませんか?)また、完全に有効で正しいアドレスが間違っているとユーザーに伝えると、不必要に不必要に疎外されることを防ぎます。他の回答が言うように、あなたはまだいくつかのアドレスを処理できないかもしれません(これは疎外が必要です):メールアドレスの処理は簡単ではありません。しかし、彼らは彼らがあなたにメールアドレスを提供したいかどうかを知る必要があるのです!

確認する必要があるのは、ユーザーが@の前にテキストを、その後にテキストを入力し、アドレスが極端に長くないこと(たとえば1000文字)であることだけです。警告を表示したい場合(「これはトラブルのようです!タイプミスはありますか?続行する前にダブルチェック」)、それは問題ありませんが、メールアドレスの追加プロセスをブロックするべきではありません。

もちろん、あなたが彼らに電子メールを送ることを気にしないなら、彼らが入力したものは何でも取る。たとえば、アドレスは Gravatar にのみ使用されますが、Gravatarはすべての電子メールアドレスを検証します。

11
Roger Pate

このRFCに示されているように、ASCII以外のメールアドレスを持つ可能性があります。 http://tools.ietf.org/html/rfc349 そして、私が理解していることから、各国ごとに1つの言語コードのみが許可され、ASCIIに変換する方法もありますが、それは些細な問題ではありません。

5
James Black

私は、単一引用符で囲まれた電子メールアドレスに遭遇しましたが、まれではありません。空白(厳密に言えば許可されます)、複数の '@'記号、および合計で5文字より短いアドレス文字列を拒否します。これにより、作成されるよりも多くの問題が解決されると信じています。これまで10年以上、数十万のアドレスを使用して、多くのガベージアドレスを拒否していました。また、挿入または更新時にすべてのメールアドレスをダウンケースするトリガーがあります。

とはいえ、所有者との往復なしにメールを検証することは不可能ですが、少なくとも非常に疑わしいデータは拒否できます。

2
Allan Peda

@ Matas Vaitkevicius での構築 '回答:Pythonで正規表現をさらに修正し、 このページ とウィキペディアの このページ 、素晴らしいregex101ウェブサイトを使用して: https://regex101.com/r/uP2oL7/26

これが誰かを助けることを願っています!:)

1
pooh17