Jakie znaki są dozwolone w adresie e-mail?

Nie pytam o pełną walidację e-maili.

Chcę tylko wiedzieć, jakie są dozwolone znaki w user-name i server części adresu e-mail. Może to być uproszczone, może adresy e-mail mogą przybierać Inne formy, ale nie obchodzi mnie to. Pytam tylko o tą prostą formę: user-name@server (np. [email protected]) i dozwolone znaki w obu częściach.

Author: kevinarpe, 2010-01-12

18 answers

Zobacz RFC 5322: Internet Message Format oraz, w mniejszym stopniu, RFC 5321: Simple Mail Transfer Protocol .

RFC 822 obejmuje również adresy e-mail, ale zajmuje się głównie swoją strukturą:

 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

I jak zwykle Wikipedia ma przyzwoity artykuł o adresach e-mail :

Adres e-mail może być zapisany w formacie ASCII.]}
  • Wielkie i małe litery łacińskie A do Z i a do z;
  • cyfry 0 do 9;
  • znaki specjalne !#$%&'*+-/=?^_`{|}~;
  • Nie jest to pierwszy ani ostatni znak, chyba że jest cytowany, a także pod warunkiem, że nie pojawia się po kolei, chyba że jest cytowany (np. [email protected] nie jest dozwolone, ale "John..Doe"@example.com jest dozwolone);
  • spacja i "(),:;<>@[\] znaki są dozwolone z ograniczeniami (są dozwolone tylko wewnątrz cytowanego ciągu, jak opisano w poniższym akapicie, a ponadto, odwrotny ukośnik lub podwójny cudzysłów musi być poprzedzony ukośnikiem);
  • komentarze są dozwolone z nawiasami na każdym końcu lokalnej części; np. john.smith(comment)@example.com i (comment)[email protected] są równoważne [email protected].

Oprócz znaków ASCII, od 2012 roku Można używać znaków międzynarodowych powyżej U+007F, kodowane jako UTF-8 .

Aby sprawdzić poprawność, zobacz używanie wyrażenia regularnego do weryfikacji adresu e-mail.

The domain część jest zdefiniowana w następujący sposób :

Standardy internetowe (Prośba o komentarze) dla protokołów nakazują, aby etykiety nazw hostów składowych mogły zawierać tylko litery ASCII a przez z (w sposób niewrażliwy na wielkość liter), cyfry 0 przez 9 i myślnik (-). Oryginalna Specyfikacja nazw hostów w RFC 952 , nakazywała, że etykiety nie mogą zaczynać się od cyfry lub myślnika i nie mogą kończyć się myślnikiem. Jednak kolejne Specyfikacja (RFC 1123 ) zezwala na rozpoczynanie etykiet nazw hostów od cyfr. Nie są dozwolone inne symbole, znaki interpunkcyjne ani spacje.

 631
Author: Anton Gogolev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:32

Uważaj! W tym wątku jest sporo wiedzy (rzeczy, które kiedyś były prawdziwe, a teraz nie są).

Aby uniknąć fałszywie pozytywnych odrzuceń rzeczywistych adresów e-mail w obecnym i przyszłym świecie oraz z dowolnego miejsca na świecie, musisz znać co najmniej koncepcję wysokiego poziomu RFC 3490 , "Internacjonalizacja nazw domen w aplikacjach (IDNA)". Wiem, że ludzie w nas i często nie są na to, ale to jest już w powszechne i szybko rosnące wykorzystanie na całym świecie (głównie części nieanglojęzyczne).

Najważniejsze jest to, że możesz teraz używać adresów takich jak mason@日本.com oraz wildwezyr@fahrvergnügen.net. Nie, Nie Jest to jeszcze kompatybilne ze wszystkim (jak wielu narzekało powyżej, nawet proste adresy ident w stylu qmail są często błędnie odrzucane). Ale jest RFC, jest spec, jest teraz wspierany przez IETF i ICANN,i-co ważniejsze-istnieje duża i rosnąca liczba implementacji wspierających to ulepszenia, które są obecnie w użyciu.

Sam nie wiedziałem zbyt wiele o tym rozwoju, dopóki nie wróciłem do Japonii i zacząłem widzieć adresy e-mail takie jak hei@やる.ca i adresy URL Amazon w ten sposób:

Http://www.amazon.co.jp/エレクトロニクス-デジタルカメラ-ポータブルオーディオ/b/ref=topnav_storetab_e?ie=UTF8&node=3210981

Wiem, że nie chcesz linków do specyfikacji, ale jeśli polegasz wyłącznie na przestarzałej wiedzy hakerów na forach internetowych, walidator e-mail zakończy się odrzuceniem adresy e-mail, których użytkownicy coraz częściej oczekują, że będą działać. Dla tych użytkowników taka Walidacja będzie tak samo irytująca, jak zwykła Martwa forma mózgu, której wszyscy nienawidzimy, ta, która nie radzi sobie z + lub trzyczęściową nazwą domeny lub czymkolwiek.

Więc nie mówię, że to nie jest kłopotliwe, ale pełna lista znaków "dozwolonych pod pewnymi/dowolnymi / żadnymi warunkami" to (prawie) wszystkie znaki we wszystkich językach. Jeśli chcesz " zaakceptować wszystkie poprawne adresy e-mail (i wiele nieprawidłowych)", to trzeba wziąć pod uwagę IDN, co w zasadzie czyni podejście oparte na znakach bezużytecznym (przepraszam), chyba że najpierw przekonwertujesz internacjonalizowane adresy e-mail na Punycode.

Po zrobieniu tego możesz zastosować się (większość) do powyższych rad.

 266
Author: Mason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-10 15:22:25

Format adresu e-mail: local-part@domain-part (max. 64 @ 255 znaków, w sumie nie więcej niż 256).

local-part i domain-part mogą mieć inny zestaw dozwolonych znaków, ale to nie wszystko, ponieważ jest więcej reguł.

Ogólnie rzecz biorąc, część lokalna może mieć znaki ASCII:

  • małe litery łacińskie: abcdefghijklmnopqrstuvwxyz,
  • Wielkie litery łacińskie: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • cyfry: 0123456789,
  • znaki specjalne: !#$%&'*+-/=?^_`{|}~,
  • kropka: . (nie pierwsza lub ostatni znak lub powtórzony, chyba że cytowany),
  • interpunkcje przestrzenne takie jak: "(),:;<>@[\] (z pewnymi ograniczeniami),
  • komentarze: () (są dozwolone w nawiasach, np. (comment)[email protected]).

Część domeny:

  • małe litery łacińskie: abcdefghijklmnopqrstuvwxyz,
  • Wielkie litery łacińskie: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • cyfry: 0123456789,
  • myślnik: - (nie pierwszy ani ostatni znak),
  • może zawierać adres IP otoczony nawiasami kwadratowymi: jsmith@[192.168.2.1] lub jsmith@[IPv6:2001:db8::1].

Te adresy e-mail są ważne:

I te przykłady nieprawidłowego:

  • Abc.example.com (nie @ znak)
  • A@b@[email protected] (tylko jeden @ jest dozwolony poza cudzysłowami)
  • a"b(c)d,e:f;gi[j\k][email protected] (żaden ze znaków specjalnych w tej części lokalnej nie jest dozwolony poza cudzysłowami)
  • just"not"[email protected] (cytowane łańcuchy muszą być oddzielone kropkami lub jedynym elementem składającym się na lokalny część)
  • Spacje, cudzysłowy i ukośniki mogą istnieć tylko wtedy, gdy w cudzysłowach i poprzedzone są ukośnikiem.]}
  • W przeciwieństwie do innych języków, w których nie można używać cudzysłowów, nie można używać cudzysłowów.]}
  • W związku z tym, że Gmail nie jest w stanie wykonać tego zadania, nie jest w stanie wykonać tego zadania.]}
  • [email protected] (Podwójna kropka po @)
  • poprawny adres ze spacją wiodącą
  • a valid address with a trailing przestrzeń

Źródło: adres e-mail w Wikipedii


Aby uzyskać więcej informacji, skontaktuj się z nami]}

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)
Nie jest to jednak możliwe w przypadku, gdy nie jest to możliwe.]}

Zobacz także: RFC 822 Parser adresów e-mail w PHP.


[[48]}formalne definicje adresów e-mail znajdują się w:

  • RFC 5322 (sekcje 3.2.3 i 3.4.1, RFC 2822), RFC 5321, RFC 3696,
  • RFC 6531 (dozwolone znaki).

Powiązane:

 22
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-23 11:47:05

Wikipedia ma dobry artykuł na ten temat , a oficjalna specyfikacja jest tutaj. Z Wikipedii:

Lokalna część adresu e-mail może używać dowolnego z tych znaków ASCII:

  • Wielkie i małe litery angielskie (a-z, A-z)
  • cyfry od 0 do 9
  • postacie ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Znak . (kropka, kropka, kropka) pod warunkiem, że nie jest to pierwszy lub ostatni znak, a także pod warunkiem, że nie pojawia się dwa lub więcej razy po sobie.

DODATKOWO, quoted-strings (czyli: "John Doe"@example.com) są dozwolone, dopuszczając tym samym znaki, które w przeciwnym razie byłyby zakazane, jednak nie pojawiają się w powszechnej praktyce. RFC 5321 ostrzega również, że "host, który oczekuje odbioru poczty, powinien unikać definiowania skrzynek pocztowych, w których część lokalna wymaga (lub używa) postaci cytowanego ciągu znaków".

 20
Author: Mike Weller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 11:36:39

Nazwa:

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

Serwer:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.
 12
Author: ThinkingStiff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-27 17:34:53

Możesz zacząć od artykułu w Wikipedii :

  • wielkie i małe litery angielskie (a-z, A-z)
  • cyfry od 0 do 9
  • postacie ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • znak . (kropka, kropka, kropka) pod warunkiem, że nie jest to pierwszy lub ostatni znak, a także pod warunkiem, że nie pojawia się dwa lub więcej razy po sobie.
 11
Author: Vladimir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-12 14:20:10

Google robią ciekawą rzecz z ich gmail.com adresy. gmail.com adresy dopuszczają tylko litery (a-z), cyfry i kropki(które są ignorowane).

Np. [email protected] jest taki sam jak [email protected], a oba adresy e-mail zostaną wysłane na tę samą skrzynkę pocztową. [email protected] jest również dostarczany do tej samej skrzynki pocztowej.

Aby odpowiedzieć na to pytanie, czasami zależy to od implementatora, ile standardów RFC chcą przestrzegać. Google ' s gmail.com styl adresów jest zgodny ze standardami. Robią to w ten sposób, aby uniknąć nieporozumień, w których różne osoby przyjmowałyby podobne adresy e-mail, np.

*** gmail.com accepting rules ***
[email protected]   (accepted)
[email protected]   (bounce and account can never be created)
[email protected]     (accepted)
D.Oy'[email protected]   (bounce and account can never be created)

Link do wikipedii jest dobrym odniesieniem do tego, na co pozwalają adresy e-mail. http://en.wikipedia.org/wiki/Email_address

 8
Author: Angel Koh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-21 12:01:40

Sprawdź na @ i . a następnie wyślij e-mail, aby je zweryfikować.

Nadal nie mogę używać adresu e-mail my .name na 20% witryn w Internecie, ponieważ ktoś schrzanił walidację poczty e-mail lub ponieważ wyprzedza on nowe adresy.

 5
Author: Richard Maxwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-11 19:28:39

Krótka odpowiedź jest taka, że są 2 odpowiedzi. Jest jeden standard tego, co powinieneś zrobić. ie zachowanie, które jest mądre i będzie trzymać się z dala od kłopotów. Istnieje inny (znacznie szerszy) standard zachowania, który powinieneś zaakceptować bez sprawiania kłopotów. Ten dualizm działa do wysyłania i przyjmowania wiadomości e-mail, ale ma szerokie zastosowanie w życiu.

Aby uzyskać dobry przewodnik po adresach, które tworzysz; Zobacz: http://www.remote.org/jochen/mail/info/chars.html

Aby filtrować poprawne e-maile, wystarczy przekazać wszystko na tyle zrozumiałe, aby zobaczyć następny krok. Albo zacznij czytać kilka RFC, uwaga, tu będą smoki.

 4
Author: Michael JAMES,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-01 01:50:28

Dobra lektura na temat sprawy .

Fragment:

These are all valid email addresses!

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/[email protected]
\[email protected]
!def!xyz%[email protected]
[email protected]
 4
Author: Luke Madhanga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-06 09:46:01

Przyjęta odpowiedź odnosi się do artykułu w Wikipedii podczas dyskusji na temat poprawnej lokalnej części adresu e-mail, ale Wikipedia nie jest w tym zakresie autorytetem.

IETF RFC 3696 jest organem w tej sprawie i powinien być konsultowany w sekcji 3. Ograniczenia dotyczące adresów e-mail na stronie 5:

Współczesne adresy e-mail składają się z "części lokalnej" oddzielonej od "część domeny "(w pełni kwalifikowana nazwa domeny) przez znak at ("@"). Na składnia części domeny odpowiada tej z poprzedniej sekcja. Zidentyfikowane w tym dziale obawy dotyczące filtrowania i listy nazw dotyczą nazw domen używanych w kontekście poczty e-mail jako cóż. Nazwę domeny można również zastąpić adresem IP w nawias kwadratowy, ale ta forma jest zdecydowanie odradzana z wyjątkiem cele testowania i rozwiązywania problemów.

Część lokalna może pojawić się przy użyciu konwencji cytowania opisanych poniżej. Cytowane formy są rzadko stosowane w praktyce, ale są wymagane w pewnych uzasadnionych celach. Dlatego nie należy ich odrzucać w procedury filtrowania, ale zamiast tego powinny być przekazywane do systemu poczty e-mail do oceny przez gospodarza docelowego.

Dokładną regułą jest to, że każdy znak ASCII, łącznie z kontrolką znaki mogą pojawiać się w cudzysłowie lub w cytowanym łańcuchu znaków. Gdy cytowanie jest potrzebne, znak odwrotny ukośnik jest używany do cytowania następujących charakter. Na przykład

  Abc\@[email protected]

Jest prawidłową formą adresu e-mail. Mogą pojawić się również puste spacje, jak w

  Fred\ [email protected]

Odwrotny ukośnik może być również użyty do cytowania samego siebie, np.

  Joe.\\[email protected]

Oprócz cytowania za pomocą znaku odwrotnego ukośnika, konwencjonalne znaki podwójnego cudzysłowu mogą być używane do otaczania łańcuchów. Na przykład

  "Abc@def"@example.com

  "Fred Bloggs"@example.com

Są alternatywnymi formami dwóch pierwszych przykładów powyżej. Te cytowane formy są rzadko zalecane i są rzadkie w praktyce, ale, jak omówione powyżej, musi być obsługiwane przez aplikacje Przetwarzające adresy e-mail. W szczególności cytowane formy często pojawiają się w kontekst adresów związanych z przejściami z innych systemów i kontekstów; te Wymogi przejściowe nadal powstają i, ponieważ system, który akceptuje podany przez Użytkownika adres e-mail, nie może "wiedzieć", czy adres ten jest powiązany ze starszym systemem, formularze adresowe muszą być akceptowane i przekazywane do środowiska e-mail.

Bez cudzysłowów, lokalne-części mogą składać się z dowolnej kombinacji
znaki Alfabetyczne, cyfry lub dowolne znaki specjalne

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

Period (".") mogą się również pojawić, ale nie mogą być użyte do rozpoczęcia lub zakończenia części lokalnej, nie mogą też występować dwa lub więcej kolejnych okresów. Inaczej mówiąc, każdy znak graficzny (drukujący) ASCII inny niż znak at ( " @ " ), odwrotny ukośnik, podwójny cudzysłów, przecinek lub nawiasy kwadratowe może pojawić się bez cytowania. Jeśli którakolwiek z tych list wykluczonych postaciami są aby się pojawić, muszą być cytowane. Formy takie jak

  [email protected]

  customer/[email protected]

  [email protected]

  !def!xyz%[email protected]

  [email protected]

Są ważne i są widoczne dość regularnie, ale każdy z znaków wymienione powyżej są dozwolone.

Jak inni to zrobili, przesyłam regex, który działa zarówno dla PHP, jak i JavaScript, aby zweryfikować adresy e-mail:

/^[a-z0-9!'#$%&*+\/=?^_`{|}~-]+(?:\.[a-z0-9!'#$%&*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-zA-Z]{2,}$/i
 3
Author: Mac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 16:50:46

Jak można znaleźć w ten link do Wikipedii

Adres e-mail może być zapisany w postaci znaków ASCII:

Lokalna część adresu e-mail może używać dowolnego z tych znaków ASCII:

  • Wielkie i małe litery łacińskie A do Z i a do z;

  • Cyfry 0 do 9;

  • Znaki specjalne !#$%&'*+-/=?^_`{|}~;

  • Kropka ., pod warunkiem, że nie jest to pierwszy lub ostatni znak, chyba że jest cytowany, oraz pod warunkiem, że nie pojawiają się kolejno, chyba że są cytowane (np. [email protected] nie jest dozwolone, ale "John..Doe"@example.com jest dozwolone);

  • Znaki spacji i {[10] } są dozwolone z ograniczeniami (są dozwolone tylko wewnątrz cytowanego ciągu, jak opisano w akapicie poniżej, a ponadto, odwrotny ukośnik lub podwójny cudzysłów musi być poprzedzony odwrotnym ukośnikiem);

  • Komentarze są dozwolone z nawiasami na każdym końcu lokalnej części; np. john.smith(comment)@example.com i (comment)[email protected] są równoważne [email protected].

Oprócz powyższych znaków ASCII, międzynarodowe znaki powyżej U+007F, zakodowane jako UTF-8, są dozwolone przez RFC 6531 , chociaż systemy pocztowe mogą ograniczyć użycie znaków przy przypisywaniu lokalnych części.

Cytowany łańcuch może istnieć jako oddzielony kropkami encja w części lokalnej, lub może istnieć, gdy najbardziej oddalone cudzysłowy są najbardziej oddalonymi znakami części lokalnej (np. abc."defghi"[email protected] lub "abcdefghixyz"@example.com są dozwolone. Odwrotnie, abc"defghi"[email protected] nie jest; ani nie jest abc\"def\"[email protected]). Cytowane ciągi i znaki nie są jednak powszechnie używane. RFC 5321 ostrzega również, że "host, który spodziewa się odbierać pocztę, powinien unikać definiowania skrzynek pocztowych, w których lokalna część wymaga (lub używa) postaci Quoted-string".

Część lokalna postmaster jest traktowana specjalnie-nie rozróżnia wielkości liter i powinna być przekazywana do administratora poczty domeny. Z technicznego punktu widzenia wszystkie pozostałe lokalne części uwzględniają wielkość liter, dlatego [email protected] i [email protected] określają różne skrzynki pocztowe; jednak wiele organizacji traktuje wielkie i małe litery jako równoważne.

Pomimo szerokiej gamy znaków specjalnych, które są technicznie ważne; organizacje, usługi Pocztowe, Serwery Pocztowe i klienci pocztowi w praktyce często nie akceptują ich wszystkich. Na przykład usługa Windows Live Hotmail umożliwia tworzenie adresów e-mail tylko za pomocą znaków alfanumerycznych, kropek (.), podkreślenia (_) i myślników (-). Powszechną radą jest unikanie używania niektórych znaków specjalnych, aby uniknąć ryzyko odrzucenia wiadomości e-mail.

 2
Author: Yash Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-05 23:14:36

Odpowiedź brzmi (prawie) ALL (7-bitowe ASCII).
Jeśli zasady włączenia są"...dozwolone pod pewnymi/dowolnymi / żadnymi warunkami..."

Wystarczy spojrzeć na jedną z kilku możliwych reguł włączenia dozwolonego tekstu w części "tekst domeny" w RFC 5322 na górze strony 17 znajdujemy:

dtext          =   %d33-90 /          ; Printable US-ASCII
                   %d94-126 /         ;  characters not including
                   obs-dtext          ;  "[", "]", or "\"

Jedyne trzy brakujące znaki w tym opisie są używane w domenie-literal [], Aby utworzyć parę cudzysłowów \ i znak spacji(%d32). Z tym całym stosuje się przedział 32-126 (dziesiętny). Podobne wymagania pojawiają się jako "qtext" i "ctext". Wiele znaków kontrolnych jest również dozwolonych/używanych. Jedna lista takich znaków sterujących pojawia się na stronie 31 sekcja 4.1 RFC 5322 jako obs-NO-ws-CTL.

obs-NO-WS-CTL  =   %d1-8 /            ; US-ASCII control
                   %d11 /             ;  characters that do not
                   %d12 /             ;  include the carriage
                   %d14-31 /          ;  return, line feed, and
                   %d127              ;  white space characters

Wszystkie te znaki kontrolne są dozwolone, jak podano na początku sekcji 3.5:

.... MAY be used, the use of US-ASCII control characters (values
     1 through 8, 11, 12, and 14 through 31) is discouraged ....

I taka zasada włączenia jest więc "po prostu zbyt szeroka". Lub, w innym sensie, oczekiwana reguła jest "zbyt uproszczona".

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-21 04:56:14

W moim PHP używam tego sprawdzania

<?php
if (preg_match(
'/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/',
"tim'[email protected]"        
)){
    echo "legit email";
} else {
    echo "NOT legit email";
}
?>

Spróbuj sam http://phpfiddle.org/main/code/9av6-d10r

 -1
Author: Yevgeniy Afanasyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 02:00:19

Utworzyłem ten regex zgodnie z wytycznymi RFC:

^[\\w\\.\\!_\\%#\\$\\&\\'=\\?\\*\\+\\-\\/\\^\\`\\{\\|\\}\\~]+@(?:\\w+\\.(?:\\w+\\-?)*)+$
 -1
Author: Mau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-19 20:26:45

Dla osób zainteresowanych walidacją domen międzynarodowych, dostępne jest narzędzie. NET (niezwiązane z firmą):

Http://cobisi.com/email-validation/.net-component - zgodny z długą listą RFC:

Standardy IETF (RFC 1123, RFC 2821, RFC 2822, RFC 3490, RFC 3696, RFC 4291, RFC 5321, RFC 5322 i RFC 5336), z obsługą cytowanych słów, literały domen, nazwy domen inne niż ASCII (IDNA) i skrzynki pocztowe, oraz komentarze

 -1
Author: Sha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-11 02:00:54

Dla uproszczenia, oczyszczam zgłoszenie, usuwając cały tekst w podwójnych cudzysłowach i tych związanych z podwójnymi cudzysłowami przed zatwierdzeniem, umieszczając kibosh na zgłoszeniach adresów e-mail na podstawie tego, co jest niedozwolone. Tylko dlatego, że ktoś może mieć Johna... "the * $hizzle * Bizzle" [email protected] adres nie oznacza, że muszę go wpuścić do systemu. Żyjemy w przyszłości, gdzie może zajmuje mniej czasu, aby uzyskać bezpłatny adres e-mail niż zrobić dobrą pracę wycieranie Tyłek. I nie jest tak, że kryteria e-mail nie są wstawione tuż obok wejścia mówiącego, co jest, a co nie jest dozwolone.

Dezynfekuję również to, co jest szczególnie niedozwolone przez różne RFC po usunięciu cytowanego materiału. Lista specjalnie niedozwolonych znaków i wzorców wydaje się być o wiele krótszą listą do przetestowania.

Disallowed:

    local part starts with a period ( [email protected] )
    local part ends with a period   ( [email protected] )
    two or more periods in series   ( [email protected] )
    &’`*|/                          ( some&thing`[email protected] )
    more than one @                 ( which@[email protected] )
    :%                              ( mo:characters%mo:[email protected] )

W podanym przykładzie:

John.."The*$hizzle*Bizzle"[email protected] --> [email protected]

[email protected] --> [email protected]

Wysłanie wiadomości e-mail potwierdzającej wynik po próbie dodania możesz też zmienić adres e-mail, aby sprawdzić, czy Twój kod obsługuje podany adres e-mail. Jeśli e-mail przejdzie walidację po tak wielu rundach dezynfekcji, jak to konieczne, a następnie odpalić to potwierdzenie. Jeśli prośba wróci z linku Potwierdzającego, wtedy nowy e-mail może zostać przeniesiony ze statusu gospodarstwa / / temporary| / czyściec lub magazynu, aby stać się prawdziwym, bonafide pierwszej klasy przechowywany e-mail.

Powiadomienie o niepowodzeniu lub sukcesie zmiany adresu e-mail można wysłać na stary adres e-mail, jeśli chcesz być taktowny. Niepotwierdzone konfiguracje kont mogą wypaść z systemu jako nieudane próby całkowicie po rozsądnym czasie.

Nie zezwalam na śmierdzące maile w moim systemie, może to po prostu wyrzucanie pieniędzy. Ale w 99,9% przypadków ludzie po prostu robią to, co należy i mają wiadomość e-mail, która nie przesuwa limitów zgodności na krawędź przy użyciu scenariuszy zgodności edge case. Uważaj na regex DDoS, jest to miejsce, w którym można dostać się do kłopoty. I jest to związane z trzecią rzeczą, którą robię, nakładam limit na to, jak długo jestem gotów przetwarzać jeden e-mail. Jeśli musi spowolnić mój komputer, aby uzyskać walidację, nie przejdzie on przez logikę punktu końcowego interfejsu moje przychodzące dane API.

Edit: ta odpowiedź była ciągle krytykowana za to, że jest" zła " i może na to zasłużyła. Może nadal jest źle, a może nie.

 -1
Author: BradChesney79,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 18:31:10

Gmail zezwala tylko na znak + jako znak specjalny, a w niektórych przypadkach (.), ale inne znaki specjalne nie są dozwolone w Gmailu. RFC mówi, że można używać znaków specjalnych, ale należy unikać wysyłania poczty do Gmaila ze znakami specjalnymi.

 -2
Author: Mohammed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-17 18:22:36