Я не спрашиваю о полной проверке электронной почты.
Я просто хочу знать, что разрешены символы user-name
и server
части адреса электронной почты. Это может быть упрощено, может быть, адреса электронной почты могут принимать другие формы, но мне все равно. Я спрашиваю только об этой простой форме: user-name@server
(например, wild.wezyr@best-server-ever.com) и разрешенных символах в обеих частях.
forms
email
email-validation
email-address
WildWezyr
источник
источник
+
разрешено. Это сводит меня с ума, когда веб-сайты не позволяют это, потому что моя электронная почта есть+
в нем, и так много сайтов не позволяют это."hello world"@example.com
действует.Ответы:
См. RFC 5322: Формат интернет-сообщения и, в меньшей степени, RFC 5321: Простой протокол пересылки почты .
RFC 822 также охватывает адреса электронной почты, но в основном имеет дело со своей структурой:
И, как обычно, в Википедии есть достойная статья об адресах электронной почты :
В дополнение к символам ASCII с 2012 года вы можете использовать вышеупомянутые международные символы
U+007F
, закодированные как UTF-8, как описано в спецификации RFC 6532 и объяснено в Википедии . Обратите внимание, что по состоянию на 2019 г. эти стандарты все еще помечены как предлагаемые, но постепенно внедряются. Изменения в этой спецификации по существу добавили международные символы в качестве допустимых буквенно-цифровых символов (atext), не затрагивая правила для разрешенных и запрещенных специальных символов, таких как!#
и@:
.Для проверки см. Использование регулярного выражения для проверки адреса электронной почты .
domain
Часть определяется следующим образом :источник
.ann..other.@example.com
это не действительный адрес электронной почты, ноann.other@example.com
, хотя оба используют одни и те же символы.Осторожно! В этой теме есть куча знаний (вещи, которые раньше были правдой, а теперь нет).
Чтобы избежать ложноположительных отклонений фактических адресов электронной почты в текущем и будущем мире и из любой точки мира, вам необходимо знать хотя бы концепцию высокого уровня RFC 3490 , «Интернационализация доменных имен в приложениях (IDNA)». Я знаю, что люди в США и А часто не задумываются об этом, но они уже широко распространены и быстро растут во всем мире (в основном это не английский язык).
Суть в том, что теперь вы можете использовать адреса, такие как mason @ 日本 .com и wildwezyr@fahrvergnügen.net. Нет, это еще не совместимо со всем (как многие сетовали выше, даже простые адреса qmail-style + идент часто ошибочно отклоняются). Но есть RFC, есть спецификация, теперь она поддерживается IETF и ICANN, и, что более важно, существует большое и растущее число реализаций, поддерживающих это улучшение, которые в настоящее время находятся в эксплуатации.
Я сам ничего не знал об этой разработке, пока не вернулся в Японию и не начал видеть адреса электронной почты, такие как hei @ や る .ca и URL-адреса Amazon, например:
http://www.amazon.co.jp/ エ レ ク ト ロ ニ ク ス - デ ジ タ ル カ メ ラ - ポ ー タ ブ ル オ ー デ ィ オ / б / исх = topnav_storetab_e т.е. = UTF-8 & узел = 3210981
Я знаю, что вам не нужны ссылки на спецификации, но если вы полагаетесь исключительно на устаревшие знания хакеров на интернет-форумах, ваш валидатор электронной почты в конечном итоге будет отклонять адреса электронной почты, которые все чаще ожидают пользователи, не говорящие по-английски. Для этих пользователей такая проверка будет такой же раздражающей, как обычная мертвая форма, которую мы все ненавидим, та, которая не может обрабатывать доменное имя «+» или «три части» или что-то еще.
Так что я не говорю, что это не хлопотно, но полный список символов, «разрешенных при некоторых / любых / никаких условиях», - это (почти) все символы на всех языках. Если вы хотите «принять все действительные адреса электронной почты (и многие недействительные тоже)», вам необходимо принять во внимание IDN, что в основном делает бесполезным подход на основе символов (извините), если только вы сначала не преобразовали интернационализированные адреса электронной почты в Punycode .
После этого вы можете следовать (большей части) совету выше.
источник
Формат адреса электронной почты:
local-part@domain-part
(не более 64 @ 255 символов, всего не более 256).local-part
Иdomain-part
может иметь различный набор допустимых символов, но это еще не все, так как есть еще правила к нему.Как правило, локальная часть может иметь следующие символы ASCII:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,!#$%&'*+-/=?^_`{|}~
,.
(не первый или последний символ или повторяется, если не указано),"(),:;<>@[\]
(с некоторыми ограничениями),()
(допустимы в скобках, например(comment)john.smith@example.com
).Доменная часть:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,-
(не первый или последний символ),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
(отправлено с локального хоста)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 для проверки электронной почты:
Смотрите также: RFC 822 Парсер адресов электронной почты в PHP .
Формальные определения адресов электронной почты:
Связанные с:
источник
something@something.something
и назовите это день.В Википедии есть хорошая статья на эту тему , и официальная спецификация здесь . Из Википедии:
источник
Google делает интересную вещь с их адресами gmail.com. Адреса gmail.com допускают только буквы (az), цифры и точки (которые игнорируются).
например, pikachu@gmail.com совпадает с pi.kachu@gmail.com, и оба адреса электронной почты будут отправлены в один и тот же почтовый ящик. PIKACHU@gmail.com также доставляется в тот же почтовый ящик.
Таким образом, чтобы ответить на вопрос, иногда от исполнителя зависит, насколько много стандартов RFC они хотят соблюдать. Стиль адреса Google gmail.com совместим со стандартами. Они делают это таким образом, чтобы избежать путаницы, когда разные люди берут одинаковые адреса электронной почты, например
Ссылка на википедию - хорошая ссылка на то, что обычно разрешают адреса электронной почты. http://en.wikipedia.org/wiki/Email_address
источник
{john'doe}@my.server
без проблем. Протестировано с hMail сервером тоже.{piotr'kula}@kula.solutions
- Если это работает, вы получите хороший автоответ от него. Иначе ничего не случится.Вы можете начать со статьи в Википедии :
источник
Имя:
Сервер:
источник
<>
и[]
? Например,"()<>[]:,;@\\\"!#$%&'-/=?^_
{} | ~ .a "@ example.org`?Проверьте на @ и. а затем отправьте электронное письмо для проверки.
Я все еще не могу использовать свой адрес электронной почты .name на 20% сайтов в Интернете, потому что кто-то испортил их проверку электронной почты, или потому что это предшествует действию новых адресов.
источник
Короткий ответ: есть 2 ответа. Существует один стандарт того, что вы должны делать. то есть поведение, которое является мудрым и будет держать вас от неприятностей. Существует другой (гораздо более широкий) стандарт поведения, которое вы должны принять, не создавая проблем. Эта двойственность работает для отправки и приема электронной почты, но имеет широкое применение в жизни.
Для хорошего руководства по адресам, которые вы создаете; см .: http://www.remote.org/jochen/mail/info/chars.html
Чтобы отфильтровать действительные электронные письма, просто передайте что-нибудь достаточно понятное, чтобы увидеть следующий шаг. Или начните читать кучу RFC, будьте осторожны, будьте драконами.
источник
Хорошее чтение по этому вопросу .
Выдержка:
источник
Joe.\\Blow@example.com
без кавычек. Это действительно верно? Это не совсем понятно, учитывая ответы здесь, но я спрашиваю, потому что я видел (очень редкие) случаи строк электронной почты DNS SoA rname, которые содержат обратную косую черту.Принятый ответ относится к статье Википедии при обсуждении действительной локальной части адреса электронной почты, но Википедия не является авторитетом в этом.
IETF RFC 3696 является авторитетом в этом вопросе, и с ним следует ознакомиться в разделе 3. Ограничения для адресов электронной почты на странице 5:
Как и другие, я отправляю регулярное выражение для PHP и JavaScript для проверки адресов электронной почты:
источник
Как можно найти в этой ссылке в Википедии
источник
Ответ (почти)
ALL
(7-битный ASCII).Если правила включения "... разрешены при некоторых / любых / никаких условиях ..."
Просто взглянув на одно из нескольких возможных правил включения для разрешенного текста в части «текст домена» в RFC 5322 вверху страницы 17, мы находим:
только три пропущенных символа в этом описании используются в домене-литерале
[]
для формирования пары в кавычках\
и символа пробела(% d32). При этом используется весь диапазон 32-126 (десятичный). Аналогичные требования появляются как «qtext» и «ctext». Многие управляющие символы также разрешены / использованы. Один список таких контрольных символов приведен в разделе 4.1 RFC 5322 на стр. 31 как obs-NO-WS-CTL.
Все эти управляющие символы разрешены, как указано в начале раздела 3.5:
И поэтому такое правило включения «просто слишком широкое». Или, в другом смысле, ожидаемое правило является «слишком упрощенным».
источник
Для простоты я очищаю отправку, удаляя весь текст в двойных кавычках и связанные с ними двойные кавычки перед проверкой, добавляя кибошу при отправке адресов электронной почты на основе того, что запрещено. Тот факт, что кто-то может иметь Джона ... "* $ hizzle * Bizzle" .. Адрес Doe@whever.com не означает, что я должен разрешить его в моей системе. Мы живем в будущем, где, возможно, потребуется меньше времени, чтобы получить бесплатный адрес электронной почты, чем делать хорошую работу, вытирая задницу. И это не так, как если бы критерии электронной почты не были намазаны прямо рядом со входом, говоря, что есть, а что нельзя.
Я также очищаю то, что конкретно не разрешено различными RFC после удаления цитируемого материала. Список специально запрещенных символов и шаблонов представляется гораздо более коротким для проверки.
Недопустимое:
В приведенном примере:
Отправка подтверждающего сообщения электронной почты на оставшийся результат после попытки добавить или изменить адрес электронной почты - это хороший способ проверить, может ли ваш код обрабатывать отправленный адрес электронной почты. Если электронное письмо проходит проверку после стольких циклов очистки, сколько необходимо, то отправьте это подтверждение. Если запрос приходит по ссылке подтверждения, то новое электронное письмо может быть перемещено из временного | чистящего состояния или хранилища с сохранением ||, чтобы стать настоящим, добросовестным первоклассным сохраненным письмом.
Если вы хотите быть внимательным, на старый адрес электронной почты можно отправить уведомление об ошибке или успешном изменении адреса электронной почты. Неподтвержденные настройки учетной записи могут выпасть из системы как неудачные попытки полностью через разумное время.
Я не разрешаю электронные письма в моей системе, может быть, это просто выбрасывание денег. Но в 99,9% случаев люди просто поступают правильно и получают электронную почту, которая не раздвигает границы соответствия, используя сценарии совместимости с крайними случаями. Будьте осторожны с регулярным выражением DDoS, это место, где вы можете попасть в беду. И это связано с третьим, что я делаю, я ограничиваю время, которое я готов обрабатывать по одному письму. Если ему нужно замедлить мою машину для проверки - она не проходит мимо логики конечной точки API входящих данных.
Редактировать: Этот ответ продолжал быть темным за то, что был "плохим", и возможно это это заслужило Может быть, это все еще плохо, а может и нет.
источник
В моем PHP я использую эту проверку
попробуй сам http://phpfiddle.org/main/code/9av6-d10r
источник
Я создал это регулярное выражение в соответствии с рекомендациями RFC:
источник
Gmail разрешает только знак + как специальный символ, а в некоторых случаях (.), Но любые другие специальные символы не разрешены в Gmail. В RFC говорится, что вы можете использовать специальные символы, но вам следует избегать отправки почты в Gmail со специальными символами.
источник