Djangoを使用してWebサイトを構築しています。このウェブサイトには、英語圏以外の国からのかなりの数のユーザーがいる可能性があります。
メールアドレスに含めることができる文字の種類に技術的な制限があるかどうかを知りたいだけです。
メールアドレスには、英字、数字、_
、@
、および.
のみを含めることができますか?
é
やü
などの英語以外のアルファベットを含めることは許可されていますか?
中国語、日本語、またはその他のUnicode文字を含めることは許可されていますか?
メールアドレス 2つの部分で構成されます @の前のlocal
とdomain
の後に続きます。
これらの部分のルールは異なります。
_local part
_には、ASCIIを使用できます。
U+007F
_、エンコード TF-8として ._Domain part
_はより制限されています:
^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})
これで時間を節約できることを願っています。
はい、そうです。 (少なくとも) this Wikipediaの記事を読んでください。
私はアルゼンチンに住んでいますが、ñoñó1234@ server.comのようなメールが許可されています
電子メールアドレスで許可される構文は RFC 3696 で説明されており、かなり複雑です。
正確なルール[ローカルパーツ。 「@」の前の部分は、任意のASCII文字が引用符で囲まれている、または引用符で囲まれた文字列で表示される場合があることです。引用符が必要な場合、次のキャラクター
[...]
ローカル部分は、引用符なしで、アルファベット文字、数字、または特殊文字の任意の組み合わせで構成できます! #$%& '* +-/ =? ^ _ `。 {| }〜
[...]
任意の文字、またはビットの組み合わせ(オクテットとして)は、DNS名で許可されます。ただし、ほとんどのアプリケーションに必要な優先形式があります...
...など、ある程度の深さで。
メールアドレスに含めることができるものとできないものを心配するのではなく、本当に気にしないので、セットアップでメールを送信できるかどうかをテストします。これが本当に大切なことです。これは、実際に確認メールを送信することを意味します。
そうしないと、考案した任意の文字セット内にとどまる偶発的なタイプミスのはるかに一般的なケースをキャッチできません。 (クイック:[email protected]はあなたのサイトで使用するための有効なアドレスですか、それともそうではありませんか?)また、完全に有効で正しいアドレスが間違っているとユーザーに伝えると、不必要に不必要に疎外されることを防ぎます。他の回答が言うように、あなたはまだいくつかのアドレスを処理できないかもしれません(これは疎外が必要です):メールアドレスの処理は簡単ではありません。しかし、彼らは彼らがあなたにメールアドレスを提供したいかどうかを知る必要があるのです!
確認する必要があるのは、ユーザーが@の前にテキストを、その後にテキストを入力し、アドレスが極端に長くないこと(たとえば1000文字)であることだけです。警告を表示したい場合(「これはトラブルのようです!タイプミスはありますか?続行する前にダブルチェック」)、それは問題ありませんが、メールアドレスの追加プロセスをブロックするべきではありません。
もちろん、あなたが彼らに電子メールを送ることを気にしないなら、彼らが入力したものは何でも取る。たとえば、アドレスは Gravatar にのみ使用されますが、Gravatarはすべての電子メールアドレスを検証します。
このRFCに示されているように、ASCII以外のメールアドレスを持つ可能性があります。 http://tools.ietf.org/html/rfc349 そして、私が理解していることから、各国ごとに1つの言語コードのみが許可され、ASCIIに変換する方法もありますが、それは些細な問題ではありません。
私は、単一引用符で囲まれた電子メールアドレスに遭遇しましたが、まれではありません。空白(厳密に言えば許可されます)、複数の '@'記号、および合計で5文字より短いアドレス文字列を拒否します。これにより、作成されるよりも多くの問題が解決されると信じています。これまで10年以上、数十万のアドレスを使用して、多くのガベージアドレスを拒否していました。また、挿入または更新時にすべてのメールアドレスをダウンケースするトリガーがあります。
とはいえ、所有者との往復なしにメールを検証することは不可能ですが、少なくとも非常に疑わしいデータは拒否できます。
@ Matas Vaitkevicius での構築 '回答:Pythonで正規表現をさらに修正し、 このページ とウィキペディアの このページ 、素晴らしいregex101ウェブサイトを使用して: https://regex101.com/r/uP2oL7/26
これが誰かを助けることを願っています!:)