Какие символы разрешены в адресе электронной почты? - PullRequest
549 голосов
/ 12 января 2010

Я не спрашиваю о полной проверке электронной почты.

Я просто хочу узнать, какие символы разрешены в user-name и server частях электронного адреса.Это может быть упрощено, может быть, адреса электронной почты могут принимать другие формы, но мне все равно.Я спрашиваю только об этой простой форме: user-name@server (например, wild.wezyr@best-server-ever.com) и разрешенных символах в обеих частях.

Ответы [ 17 ]

712 голосов
/ 12 января 2010

См. RFC 5322: формат интернет-сообщения и, в меньшей степени, RFC 5321: простой протокол передачи почты .

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

И, как обычно, в Википедии есть приличная статья об адресах электронной почты :

Локальная часть адреса электронной почты может использовать любой из следующих символов ASCII:

  • прописные и строчные латинские буквы * от 1020 * до 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, закодированные как UTF-8, как описано в спецификации RFC 6532 и объяснил Википедия . Обратите внимание, что по состоянию на 2019 г. эти стандарты все еще помечены как предлагаемые, но постепенно внедряются. Изменения в этой спецификации по существу добавили международные символы в качестве допустимых буквенно-цифровых символов (atext), не затрагивая правила для разрешенных и запрещенных специальных символов, таких как !# и @:.

Для проверки см. Использование регулярного выражения для проверки адреса электронной почты .

Часть domain определяется следующим образом :

Стандарты Интернета (запрос на комментарии) для протоколов предусматривают, что метки имен узлов компонентов могут содержать только буквы ASCII от a до z (без учета регистра), цифры от 0 до 9, и дефис (-). Исходная спецификация имен хостов в RFC 952 требовала, чтобы метки не могли начинаться с цифры или с дефиса и не должны заканчиваться дефисом. Однако последующая спецификация ( RFC 1123 ) позволила меткам имени хоста начинаться с цифр. Другие символы, знаки препинания и пробелы не допускаются.

293 голосов
/ 15 января 2010

Берегись! В этой теме есть куча знаний (вещи, которые раньше были правдой, а теперь нет).

Чтобы избежать ложноположительных отклонений фактических адресов электронной почты в текущем и будущем мире и из любой точки мира, вам необходимо знать хотя бы концепцию высокого уровня RFC 3490 , "Интернационализация". Доменные имена в приложениях (IDNA) ". Я знаю, что люди в США и А часто не задумываются об этом, но это уже широко распространенное и быстро растущее использование по всему миру (в основном части с преобладанием неанглийского).

Суть в том, что теперь вы можете использовать адреса, такие как mason @ 日本 .com и wildwezyr@fahrvergnügen.net. Нет, это еще не совместимо со всем (как многие сетовали выше, даже простые адреса qmail-style + идент часто ошибочно отклоняются). Но есть RFC, есть спецификация, теперь она поддерживается IETF и ICANN, и, что более важно, существует большое и растущее число реализаций, поддерживающих это улучшение, которые в настоящее время находятся в эксплуатации.

Я сам ничего не знал об этой разработке, пока не вернулся в Японию и не начал видеть адреса электронной почты, такие как hei @ や る .ca, и URL-адреса Amazon, например:

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

Я знаю, что вам не нужны ссылки на спецификации, но если вы полагаетесь исключительно на устаревшие знания хакеров на интернет-форумах, ваш валидатор электронной почты в конечном итоге отвергнет адреса электронной почты, которые все чаще ожидают пользователи, не являющиеся пользователями Enlish. Для этих пользователей такая проверка будет такой же раздражающей, как обычная мёртвая форма, которую мы все ненавидим, та, которая не может обрабатывать доменное имя, состоящее из +, или трех частей, или что-то подобное.

Так что я не говорю, что это не хлопотно, но полный список символов, «разрешенных при некоторых / любых / никаких условиях», - это (почти) все символы на всех языках. Если вы хотите «принять все действительные адреса электронной почты (и многие недействительные тоже)», то вам нужно принять во внимание IDN, что в основном делает бесполезным подход на основе символов (извините), если вы сначала не конвертируете интернационализированные адреса электронной почты до Punycode .

После этого вы можете следовать (большей части) совету выше.

40 голосов
/ 05 августа 2016

Формат адреса электронной почты: local-part@domain-part (макс. 64 @ 255 символов, всего не более 256).

local-part и domain-part могут иметь различный набор разрешенных символов, но это еще не все, поскольку к нему есть больше правил.

Как правило, локальная часть может иметь следующие символы ASCII:

  • строчные латинские буквы: abcdefghijklmnopqrstuvwxyz,
  • заглавные латинские буквы: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • цифры: 0123456789,
  • специальные символы: !#$%&'*+-/=?^_`{|}~,
  • точка: . (не первый или последний символ или повторяется, если не указано),
  • знаки пунктуации, такие как: "(),:;<>@[\] (с некоторыми ограничениями),
  • комментарии: () (допускаются в скобках, например, (comment)john.smith@example.com).

Доменная часть:

  • строчные латинские буквы: abcdefghijklmnopqrstuvwxyz,
  • заглавные латинские буквы: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • цифры: 0123456789,
  • дефис: - (не первый или последний символ),
  • может содержать IP-адрес в квадратных скобках: jsmith@[192.168.2.1] или jsmith@[IPv6:2001:db8::1].

Эти адреса электронной почты действительны:

  • prettyandsimple@example.com
  • very.common@example.com
  • disposable.style.email.with+symbol@example.com
  • other.email-with-dash@example.com
  • x@example.com (однобуквенная локальная часть)
  • "much.more unusual"@example.com
  • "very.unusual.@.unusual.com"@example.com
  • "very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
  • example-indeed@strange-example.com
  • admin@mailserver1 (имя локального домена без домена верхнего уровня)
  • #!$%&'*+-/=?^_`{}|~@example.org
  • "()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
  • " "@example.org (пробел между кавычками)
  • example@localhost (отправлено с localhost)
  • example@s.solutions (см. Список доменов верхнего уровня в Интернете )
  • user@com
  • user@localserver
  • user@[IPv6:2001:db8::1]

И эти примеры недействительны:

  • Abc.example.com (без @ символа)
  • A@b@c@example.com (только один @ допускается вне кавычек)
  • a"b(c)d,e:f;gi[j\k]l@example.com (ни один из специальных символов в этой локальной части не допускается за кавычками)
  • just"not"right@example.com (строки в кавычках должны быть разделены точками или единственный элемент, составляющий локальную часть)
  • this is"not\allowed@example.com (пробелы, кавычки и обратная косая черта могут существовать только в пределах строк в кавычках и перед обратной косой чертой)
  • this\ still\"not\allowed@example.com (даже если экранировать (предшествует обратная косая черта), пробелы, кавычки и обратная косая черта должны все еще содержаться в кавычках)
  • john..doe@example.com (двойная точка перед @); (с оговоркой: Gmail позволяет это сделать)
  • john.doe@example..com (двойная точка после @)
  • действительный адрес с пробелом
  • действительный адрес с пробелом

Источник: Адрес электронной почты в Википедии


регулярное выражение Perl RFC2822 для проверки писем:

(?:(?:\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*)

Полное регулярное выражение для адресов RFC2822 составило всего 3,7 тыс.

См. Также: Анализатор адресов электронной почты RFC 822 в PHP .


Формальные определения адресов электронной почты:

  • RFC 5322 (разделы 3.2.3 и 3.4.1, устаревшие RFC 2822), RFC 5321, RFC 3696,
  • RFC 6531 (разрешенные символы).

Связанный:

21 голосов
/ 12 января 2010

В Википедии есть хорошая статья по этому , а официальная спецификация здесь . Из Википедии:

Локальная часть адреса электронной почты может использовать любой из следующих символов ASCII:

  • Прописные и строчные буквы английского алфавита (a-z, A-Z)
  • Цифры от 0 до 9
  • Персонажи! # $% & '* + - / =? ^ _ `{| } ~
  • Персонаж. (точка, точка, точка) при условии, что это не первый или последний символ, а также при условии, что он не появляется два или более раз подряд.

Кроме того, допускаются строки в кавычках (например, "John Doe" @ example.com), что позволяет использовать символы, которые в противном случае были бы запрещены, однако они не встречаются в обычной практике. RFC 5321 также предупреждает, что «узлу, который ожидает получать почту, СЛЕДУЕТ избегать определения почтовых ящиков, для которых локальная часть требует (или использует) форму Quoted-string».

13 голосов
/ 18 января 2012

Google делает интересную вещь со своими адресами gmail.com. Адреса gmail.com допускают только буквы (a-z), цифры и точки (которые игнорируются).

Например, pikachu@gmail.com совпадает с pi.kachu@gmail.com, и оба адреса электронной почты будут отправлены в один и тот же почтовый ящик. PIKACHU@gmail.com также доставляется в тот же почтовый ящик.

Таким образом, чтобы ответить на вопрос, иногда зависит от исполнителя, насколько много стандартов RFC они хотят соблюдать. Стиль адреса Google gmail.com совместим со стандартами. Они делают это таким образом, чтобы избежать путаницы, когда разные люди берут одинаковые адреса электронной почты, например

*** gmail.com accepting rules ***
d.oy.smith@gmail.com   (accepted)
d_oy_smith@gmail.com   (bounce and account can never be created)
doysmith@gmail.com     (accepted)
D.Oy'Smith@gmail.com   (bounce and account can never be created)

Ссылка на Википедию является хорошим справочником о том, какие адреса электронной почты обычно разрешены. http://en.wikipedia.org/wiki/Email_address

12 голосов
/ 12 января 2010

Вы можете начать с статьи в Википедии :

  • Прописные и строчные буквы английского алфавита (a-z, A-Z)
  • Цифры от 0 до 9
  • Персонажи! # $% & '* + - / =? ^ _ `{| } ~
  • Персонаж. (точка, точка, точка) при условии, что это не первый или последний символ, а также при условии, что он не появляется два или более раз подряд.
11 голосов
/ 18 января 2012

Имя:

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

Сервер:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.
9 голосов
/ 11 июня 2013

Проверьте @ и. а затем отправьте электронное письмо для подтверждения.

Я до сих пор не могу использовать свой адрес электронной почты .name на 20% сайтов в Интернете, потому что кто-то испортил проверку электронной почты или потому, что он предшествует действию новых адресов.

5 голосов
/ 06 января 2015

Хорошее прочтение по делу .

Выдержка:

These are all valid email addresses!

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
\$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
5 голосов
/ 01 марта 2012

Короткий ответ: есть 2 ответа. Существует один стандарт того, что вы должны делать. то есть поведение, которое является мудрым и будет держать вас от неприятностей. Существует другой (гораздо более широкий) стандарт поведения, которое вы должны принять, не создавая проблем. Эта двойственность работает для отправки и приема электронной почты, но имеет широкое применение в жизни.

Для хорошего руководства по адресам, которые вы создаете; см .: http://www.remote.org/jochen/mail/info/chars.html

Чтобы отфильтровать действительные письма, просто передайте что-нибудь достаточно понятное, чтобы увидеть следующий шаг. Или начните читать кучу RFC, будьте осторожны, будьте драконами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...