какие символы нельзя использовать в адресе электронной почты
Части адреса электронной почты и символы, которые вы можете использовать в них
Узнайте, какие символы вы можете использовать
Адреса электронной почты, например me@example.com, включают несколько элементов. Наиболее заметным является символ знака (@) в середине каждого адреса электронной почты. Перед этим следует имя пользователя, которое в данном примере – «я». После этого следует доменное имя, которое в нашем примере – «example.com».
Имя пользователя Часть письма
Перед знаком @ стоит имя пользователя. Он обозначает, кто в домене является владельцем адреса электронной почты – в нашем примере, я.
Кто бы ни настраивал ваш адрес электронной почты (вы, ваша школа или ваш работодатель), выбирает имя пользователя. Например, когда вы зарегистрируете бесплатную учетную запись электронной почты, вы введете собственное имя пользователя.
Когда вы создаете имя пользователя электронной почты, которое будет использоваться профессионально, существует несколько стандартных форматов, которые передают профессионализм. Например, использование вашего имени дружелюбно и легко запоминается, например, Bill@example.com. Это также дает некоторую анонимность, не раскрывая вашу фамилию. К сожалению, если вы настроите адрес электронной почты в популярной почтовой системе, такой как Outlook или Gmail, вы можете обнаружить, что используются общие имена.
Вот несколько других профессиональных параметров имени пользователя, которые хорошо работают:
Тем не менее, они предлагают меньше анонимности. Опять же, в больших системах электронной почты, даже эти более конкретные имена пользователей уже могут быть приняты.
Существуют некоторые ограничения для имен пользователей, такие как максимальное количество символов, которые можно использовать в адресе электронной почты, и допустимые символы. Все, что явно не разрешено, запрещено.
Символы, разрешенные в адресах электронной почты
В соответствующем стандартном документе Интернета, RFC 2822, указаны символы, которые можно использовать в адресе электронной почты.
На языке стандарта имя пользователя в электронном письме состоит из слов, разделенных точками. Слово в адресе электронной почты называется атомом или строкой в кавычках. Атом – это последовательность символов ASCII от 33 до 126, где от 0 до 31 и 127 – управляющие символы, а 32 – пробел.
Строка в кавычках начинается и заканчивается кавычкой (“). Любой символ ASCII от 0 до 177, за исключением самой кавычки и возврата каретки, может быть помещен между кавычками.
Символы обратной косой черты также могут использоваться в адресах электронной почты, но они выполняют другую функцию. Обратная косая черта заключает в кавычки любой символ и приводит к тому, что следующий символ теряет особое значение, которое он обычно имеет в контексте. Например, чтобы включить символ кавычки в адрес электронной почты, поместите обратную косую черту перед символом кавычки.
Любой алфавитно-цифровой символ ASCII может использоваться в вашем адресе электронной почты, а также любые символы между 33 и 47 ASCII. Символы, которые не допускаются в адресе электронной почты, включают:
Короче говоря, в вашем адресе электронной почты разрешены строчные буквы, цифры, тире и подчеркивание, хотя некоторые провайдеры электронной почты различают регистр при написании действительного адреса.
Какие символы допускаются в адресе электронной почты?
Я не спрашиваю о полной проверке электронной почты.
Я просто хочу знать, какие символы разрешены в user-name и server части адреса электронной почты. Это может быть упрощено, возможно, адреса электронной почты могут принимать другие формы, но мне все равно. Я спрашиваю только об этой простой форме: user-name@server (например wild.wezyr@best-server-ever.com) и разрешенные символы в обеих частях.
18 ответов
RFC 822 также охватывает адреса электронной почты, но имеет дело в основном с его структурой:
и, как обычно, Википедия имеет приличный статья об адресах электронной почты:
локальная часть адреса электронной почты может использовать любой из этих символов ASCII:
Берегись! В этом потоке есть куча знаний (вещи, которые раньше были правдой, а теперь нет).
чтобы избежать ложноположительных отклонений фактических адресов электронной почты в текущем и будущем мире и из любой точки мира, вам нужно знать, по крайней мере, концепцию высокого уровня RFC 3490, » интернационализация доменных имен в приложениях (IDNA)». Я знаю, что люди в нас и часто не в курсе этого, но это уже в широко распространенный и быстро увеличение использования по всему миру (в основном на английском преобладают детали).
Я сам мало знал об этом развитии, пока не вернулся в Японию и не начал видеть адреса электронной почты, такие как hei@やる.ca и Amazon URLs, как это:
Я знаю, что вам не нужны ссылки на спецификации, но если вы полагаетесь исключительно на устаревшие знания хакеров Интернет-форумы, ваш email validator в конечном итоге отклоняет адреса электронной почты, которые не-Enlish пользователи все чаще ожидают работать. Для этих пользователей такая проверка будет такой же раздражающей, как обычная мертвая форма мозга, которую мы все ненавидим, та, которая не может обрабатывать + или трехчастное доменное имя или что-то еще.
после этого вы можете следовать (большинству) советов выше.
формате e-mail адрес: local-part@domain-part (макс. 64@255 символов, не более 256 в общей сложности).
на local-part и domain-part может иметь другой набор разрешенных символов, но это еще не все, так как есть больше правил.
в общем, локальная часть может иметь следующие символы ASCII:
эти адреса электронной почты действительны:
и эти примеры некорректны:
полное регулярное выражение для адресов RFC2822 было всего лишь 3.7 k.
официальное определения адресов электронной почты находятся в:
локальная часть адреса электронной почты может использовать любой из следующих символов ASCII:
кроме того, строки с кавычками (т. е. «John Doe» @example.com) разрешены, таким образом, разрешены символы, которые в противном случае были бы запрещены, однако они не появляются в обычной практике. RFC 5321 также предупреждает, что»хост, который ожидает получать почту, должен избегать определения почтовых ящиков, где локальная часть требует (или использует) форму с кавычками».
Google делает интересную вещь со своими gmail.com адреса. gmail.com адреса разрешают только буквы (a-z), цифры и точки(которые игнорируются).
например, pikachu@gmail.com это то же самое, что pi.kachu@gmail.com, и оба адреса электронной почты будут отправлены в один и тот же почтовый ящик. PIKACHU@gmail.com также доставляется в тот же почтовый ящик.
поэтому, чтобы ответить на вопрос, иногда это зависит от исполнителя от того, сколько стандартов RFC они хотят следовать. Гугла gmail.com стиль адреса совместим со стандартами. Они делают это таким образом, чтобы избежать путаницы, когда разные люди будут принимать аналогичные адреса электронной почты, например
ссылка Википедии является хорошей ссылкой на то, что адреса электронной почты обычно позволяют. http://en.wikipedia.org/wiki/Email_address
короткий ответ заключается в том, что есть 2 ответа. Существует один стандарт того, что вы должны делать. т. е. поведение, которое является мудрым и будет держать вас от неприятностей. Существует еще один (гораздо более широкий) стандарт поведения, который вы должны принять, не создавая проблем. Эта двойственность работает для отправки и приема электронной почты, но имеет широкое применение в жизни.
для хорошего руководства по адресам, которые вы создаете; см.: http://www.remote.org/jochen/mail/info/chars.html
чтобы фильтровать действительные письма, просто передайте что-нибудь достаточно понятное, чтобы увидеть следующий шаг. Или начните читать кучу RFCs, осторожно, здесь будут драконы.
принятый ответ относится к статье Википедии при обсуждении действительной локальной части адреса электронной почты, но Википедия не является авторитетом в этом.
IETF RFC 3696 авторитет по этому вопросу, и следует обращаться в раздел 3. Ограничения на адреса электронной почты на странице 5:
современные адреса электронной почты состоят из «локальной части» отделился от «доменная часть» (полностью квалифицированная доменное имя) по знаку at («@»). Синтаксис доменной части соответствует синтаксису предыдущей части раздел. Проблемы, выявленные в этом разделе относительно фильтрации и списки имен применяются к доменным именам, используемым в контексте электронной почты как что ж. Доменное имя также может быть заменено IP-адресом в квадратные скобки, но эта форма сильно не рекомендуется, за исключением тестирование и устранение неполадок.
локальная часть может отображаться с использованием соглашений о цитировании описанный под. Цитируемые формы редко используются на практике, но необходимы для некоторых законных целей. Следовательно, они не должны быть отвергнуты в процедуры фильтрации, но, вместо этого, должны быть переданы в систему электронной почты для оценки хостом назначения.
точное правило заключается в том, что любой символ ASCII, включая элемент управления символы, могут отображаться в кавычках или в строке с кавычками. Когда цитирование необходимо, символ обратной косой черты используется для выражения следующих характер. Например
является действительным адресом электронной почты. Также могут появляться пробелы, как в
символ обратной косой черты также может использоваться для цитирования себя, например,
в дополнение к цитированию с использованием символа обратной косой черты, обычный символы двойной кавычки могут использоваться для окружения строк. Например
являются альтернативными формами первых двух примеров выше. Эти процитировал формы редко рекомендуются, и являются необычными на практике, но, как рассмотренные выше, должны поддерживаться приложениями, которые обрабатываются адрес электронной почты. В частности, цитируемые формы часто появляются в контекст адресов, связанных с переходами из других систем и контексты; эти переходные требования все еще возникают и, поскольку система, принимающая предоставленный пользователем адрес электронной почты, не может «знать», связан ли этот адрес с устаревшей системой, адрес формы должны быть приняты и переданы в среду электронной почты.
без кавычек, local-parts может состоять из любой комбинации
алфавитные символы, цифры или любой из специальных символов
точка («.») может также появиться, но не может использоваться для начала или конца локальная часть, а также не может появляться два или более последовательных периода. Указано иначе, любой графический (печатный) символ ASCII, кроме знак at ( » @ » ), обратная косая черта, двойной кавычка, запятая, или квадратные скобки может появиться без цитирования. Если какой-либо из этого списка исключен символы должны появиться, они должны быть процитированы. Такие формы, как
действительны и видны довольно регулярно, но любой из символов перечисленные выше разрешены.
как и другие, я отправляю регулярное выражение, которое работает как для PHP, так и для JavaScript для проверки адресов электронной почты:
Как правильно написать адрес электронной почты (e-mail) ✔, чтобы вам могли на нее отправить письмо.
Доброго дня!
«Почему не отвечаешь?», «Мне ничего не приходило на почту!», «Вы мне не можете скинуть письмо с документами?!» — это всё вопросы и претензии, которые я неоднократно получал как на рабочем месте, так и на этом блоге. 👀
Самое интересное во всем этом — что в этих случаях в принципе нельзя было ответить и отправить e-mail, так как адрес был неправильно написан. И человеку на том конце провода никогда ничего не докажешь.
Собственно, после очередного такого «случая» решил набросать небольшой ликбез по этой теме (теперь будет куда поставить ссылку в случае очередной подобной претензии. 👌).
Как создать электронную почту: e-mail (на портале mail.ru). Настройка почты — [см. пошаговую инструкцию]
Правильное написание e-mail адреса
ШАГ 1: основы
К тому же, написание e-mail должно быть выполнено латинскими буквами (прим.: допускаются цифры, подчеркивания)!
То, что я перечислил выше — это не чье-то требование, а международный формат. Соблюдая его, вам всегда смогут ответить и переслать письмо.
См. в качестве примера скриншот ниже. 👇
Пример e-mail адреса
Пару примеров правильного написания e-mail адресов:
Разберу каждую часть адреса подробнее:
Важно!
Никакие кавычки или дополнительные знаки при написании адреса электронной почты использовать не нужно ( пробелы между собачкой, логином и доменом — не используются)!
Вставка e-mail в форму
ШАГ 2: как завести себе почтовый ящик
Завести почту сегодня можно практически на любом крупном портале (👉 лучшие сервисы электро-почт).
Например, весьма неплохим выбором может стать 👉 почта от Яндекса.
Чтобы завести ящик, нужно-то:
Завести почту на Яндекс
ШАГ 3: как отправить кому-нибудь письмо на e-mail
Так как выше в пример я взял Яндекс-почту, то и здесь уместно показать работу с ней.
После того, как вы заведете себе ящик и войдете в него, пред вами предстанет достаточно простое меню. Для создания письма — достаточно кликнуть по кнопке «Написать» в верхнем углу.
Прикрепление к письму документов
ШАГ 4: как сделать свой номер мобильного адресом почты
Весьма хорошим способом перестать путаться с написанием e-mail может стать одна функция Яндекс-почты — можно свой номер мобильного использовать в качестве адреса электро-почты!
Чтобы включить данную опцию, после регистрации в почте от Яндекса, зайдите в настройки личных данных и используйте функцию «Сделать адресом номер телефона» (см. скрин ниже, стрелками показано, куда нужно нажать). 👇
Сделать адресом номер телефона
После этого, вы сможете получать электронную почту как по адресу 79271234567@yandex.ru *, так и по своему прежнему (т.е., по сути, у вас будет 2 адреса e-mail, письма с которых будут поступать в один ящик!).
На сим сегодня всё. Дополнения приветствуются.
Формат адреса электронной почты следующий:
где локальная часть(local-part) может быть до 64 символов, а доменное имя(domain) может содержать не более 253 символов. Максимальная длина всего(вместе с символом @) адреса электронной почты(email) = 256 символов.
В локальной части адреса электронной почты можно использовать любой из следующих символов ASCII:
1. Строчные и прописные английские буквы (a–z, A–Z) (ASCII: 65-90, 97-122)
2. Цифры от 0 до 9 (ASCII: 48-57)
(ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)
5. Специальные символы разрешены с ограничениями, в том числе:
Пробел и «(),:;<>@[\] (ASCII: 32, 34, 40, 41, 44, 58, 59, 60, 62, 64, 91-93)
Ограничения для специальных символов заключается в том, что они должны содержаться в кавычках и что перед специальными символами (пробел, обратная косая черта \ и кавычка » (ASCII: 32, 92, 34) должна предшествовать обратная косая черта \ (например, «\»\\\ «).
Строка в кавычках может существовать если она отделена точками или содержит всю локальную часть (например,
abc.»defghi».xyz@example.com или «abcdefghixyz»@example.com допускается.
abc»defghi»xyz@example.com и abc\»def\»ghi@example.com не допускается).
Многие организации ограничивают допустимые символы.
Доменная часть состоит либо из адреса сайта, либо ip буквально, заключеный в квадратные скобки, например, mach@[192.168.2.1], хотя это большая редкость за исключением спама Ж:-)
Никогда не проверяйте e-mail адреса по стандартам RFC
Множество сайтов требуют от пользователя ввода адреса электронной почты, и мы, как крутые и щепетильные разработчики, всегда стремимся проверять формат введенных адресов строго по стандартам RFC. Благодаря этому наши приложения и сайты проверяют формат e-mail корректно и не имеют проблем с юзабилити, а мы сладко спим, потому что уверены, что все работает как надо.
Ага, как бы не так!
Приведенные выше аргументы звучат круто и железобетонно, но проблема здесь заключается в том, что в адресе почты могут находиться совершенно бессмысленные вещи, и, на деле, проверка адресов по стандартам RFC может, наоборот, все жутко запутать.
Почему так? Существует множество способов сформировать адрес почты, который будет одновременно и корректным и бредовым. Отчасти это происходит из-за того, что некоторые почтовые службы в целях обратной совместимости позволяют представлять адреса в форматах, которые давно устарели. Например это электронная почта существовавшая до появления DNS и до появления современного формата user@domain.tld: тогда использовались UUCP ”bang path” — адреса, которые представляли собой список всех узлов по маршруту ответственных за доставку.
Внутренности адреса почты
Адрес e-mail выглядит так:
Тут mailbox может быть локальным аккаунтом пользователя, аккаунтом роли или маршрутизатором автоматизированной системы такой, например, как список рассылки, а в качестве hostname может быть использован любой узел, если о нем известно DNS-серверу, к которому обращается почтовик при доставке.
Кроме того, некоторые системы позволяют добавлять теги к адресу. Обычно это происходит в формате:
где тег и разделитель (обычно это «+», но qmail использует «-» по-умолчанию, хотя может быть сконфигурирован и иначе) игнорируются при доставке. Обычно это используется для фильтрации почты по папкам и автоматизации, но может быть использовано и для разделения введенных адресов по получателям и выявления злоупотреблений персональными данными.
Итак, в адресе в формате «mailbox@hostname», «mailbox» является пользовательским аккаунтом, приложением или аккаунтом системной роли, но может содержать и такие экстравагантные вещи, как информацию для дальнейшей маршрутизации или идентификаторы используемые для сортировки, автоматизации или отслеживания, а «hostname» — обычно доменное имя, но может являться и субдоменом, сервером, сервисом, ip-адресом или просто именем хоста.
Корректные имена ящика с точки зрения RFC
Специцификация одобряет довольно странные адреса, и было бы накладно поддерживать их все потому, что некоторые слишком сложны, и не слишком много людей обладают достаточными знаниями чтобы выделывать такие пируэты в нейминге. Поддержка таких адресов затруднит поддержку таких аккаунтов вашими сотрудниками, к тому же они почти никогда не используются в быту.
Ящик может содержать пробелы. Насколько я помню, доинтернетовский AOL разрешал пробелы в «Imya Polzovatelya», которые использовались еще и как почтовые ящики с вырезанными оттуда пробелами: «imyapolzovatelya@aol.com», однако ж согласно RFC вы можете использовать двойные кавычки вокруг ящиков содержащих пробелы:
Кстати говоря, по этой логике, ящик содержащий всего лишь пробел корректен:
А вот еще один корректный адрес, он создан из допустимых для адреса символов:
Кстати, проверяйте апострофы, апострофы должны поддерживаться:
Апострофы не должны закавычиваться или эскейпиться, но когда вы сохраняете такие адреса в базу или передаете еще куда-то, убедитесь, что всё чики-пуки.
В Википедии есть еще куча примеров.
Нужна ли полная совместимость с RFC? Вам выбирать, но я не советую — пробелы и нестандартные символы в адресе довольно необычная штука и чаще всего являются просто опечаткой. Крупные e-mail провайдеры не разрешают использовать это примерно по тем же причинам; таким образом обычно достаточно дозволять буквы, цифры, точки, подчеркивания, дефисы, апострофы и плюсы.
Регистрозависимые адреса
Согласно RFC уникальность адреса определяется его регистрозависимой уникальностью, однако 99,9% провайдеров считают иначе и не позволяют регистрировать VasyaPetrov@example.com, если vasyapetrov@example.com уже зарегистрирован. Считайте, что имя почтового ящика регистронезависимо:
Небольшая кучка систем использует полную проверку регистра, позволяя лишь адрес Allen@example.com и отбрасывая входящую корреспондецию всех остальных АлЛеНоВ, однако это не работает на практике, поскольку пользователь не привык различать регистр в адресах почты.
Должны ли вы тут сохранять совместимость с RFC? Конвертируя адреса в нижний регистр перед сохранением вы можете доставить проблем небольшому количеству пользователей (вы не сможете посылать им письма), но отослав миллионы e-mail я столкнулся с этим всего несколько раз.
Конвертация в адреса в нижний регистр является неплохой идеей в плане нормализации данных, так как домен всегда регистронезависим и должен быть в нижнем регистре. Если же вы решите сохранять адрес так, как он введен, добавьте поле, в котором будет хранить каноническую версию.
Нестандартные символы
Gmail тут отличился: в то время как стандарт включает в себя точку как стандартный символ, Gmail не делает различий между адресами ящиков с точками и без. Эти адреса указывают на один и тот же почтовый ящик:
Обратите внимание, что Google Apps позволяет использовать Gmail на любом домене.
Основная проблема здесь заключается в поиске адреса в базе в том виде, в котором он был изначально введен, что может доставить немало геморроя как пользователю, так и службе поддержки, а также и программистам с тестировщиками. Тут то вам и пригодится вторая, канонiческая форма адреса, но об этом позже.
Расширенная форма названия ящиков с использованием тегов.
Но нужно ли вычищать теги из адреса ящика?
НЕТ! Будьте дружелюбны к своим пользователям, и пользователи проникнутся верой, что вы не осуществите хищение и сбыт их персональных данных с целью наживы. Даже если вы пытаетесь запретить регистрацию дополнительных аккаунтов с существующим ящиком, представьте себе, насколько просто в наше время тупо зарегистрировать еще один ящик чтобы снова зарегистрироваться у вас — не сложнее создания алиаса или папки(но об алиасах, папках и тегах, наоборот, мало кто знает).
Итак, еще раз. Создание второй, канонической, формы сохранения адреса в базе может неплохо прикрыть вашу за вас в случае неприятностей. Убедитесь, что вы ликвидировали из нее все теги, точки и т. д. и можете сравнивать с ней свежевведенные адреса.
Юникод и интернационализированные имена ящиков
Доменные имена
У почтовых доменов те же самые ограничения как и в HTTP: они регистронезависимые, так что их следует нормализовывать в нижний регистр.
Поддомены
Некоторые адреса содержат ненужные поддомены: например, «email.msn.com» и «msn.com» являются одним и тем же почтовым доменом, кроме того, такие истории часто случаются в корпоративной среде (и это еще один хороший кандидат для каноникализации).
Интернационализированные домены (IDN )
IDN были созданы для того чтобы использовать местные символы Юникода в названиях доменов, кроме того, возможно создать домен и со специальными символами:
этот классно описывает круговорот воды в природе.
Как и HTTP, SMTP поддерживает лишь 7-битную кодировку, и для того чтобы справиться с этим несчастьем IDN конвертируются в Punycode, что позволяет имени домена конвертироваться в представление Юникод и обратно:
Очень жаль, но существует возможность фишинга при использовании IDN. Юникод содержит несколько разных экземпляров некоторых символов ASCII. Это позволяет злоумышленнику создать сайт, название которого выглядит точно также как и оригинал из-за того, что некоторые символы в названии совпадают внешне, но не внутренне.
Это порождает несколько вопросов на которые следует ответить:
Должны ли мы дозволять IDN-адреса? Можем ли мы обеспечить саппорт пользователей службой поддержки (откуда у саппорта, например, клавиатуры с китайскими иероглифами?) Должны ли мы сохранять их в Юникоде или Punycode? Если мы сохраняем каноничные адреса, то в какой кодировке это делать? Поддерживает ли вообще наш почтовик (MTA) IDN, и в какой форме он ждет адреса при отправке писем?
IP Address syntax
Использование IP-адресов допустимо:
Однако такие адреса выглядят подозрительно, и вряд ли им стоит доверять.
Временные почтовые адреса
Существует множество сервисов, которые предоставляют пользователям временные почтовые адреса. Обычно это используется для анонимности или для того чтобы регистрироваться на недоверенных сайтах.
Даже такие сервисы как Hotmail и Yahoo предоставляют алиасы, которые могут быть использованы примерно тем же способом, то есть уничтожены через некоторое время. Не существует единой техники выявления таких адресов — в конце концов именно для этого они и предназначены. Они используют большущий набор доменных имен с постоянной ротацией для того чтобы быть на шаг впереди тех, кто пытается пресечь их деятельность.