Почтовые адреса чувствительны к регистру? - PullRequest
259 голосов
/ 21 марта 2012

Я читал, что в стандартной первой части электронной почты учитывается регистр, однако я пытался отправить электронное письмо на name@example.com, Name@example.com и NAME@example.com - оно поступало в каждом случае.

Как почтовые серверы обрабатывают имена пользователей?Можно ли пропустить дело, и это сообщение не будет доставлено?Действительно ли очень важно использовать точно такой же регистр букв, который был написан при регистрации при указании вашего адреса электронной почты?

Ответы [ 5 ]

320 голосов
/ 21 марта 2012

Из RFC 5321, раздел-2.3.11:

Стандартное соглашение о присвоении имен почтовым ящикам определено как "local-part @ domain";современное использование позволяет гораздо более широкий набор приложений, чем простые «имена пользователей».Следовательно, и из-за долгой истории проблем, когда промежуточные хосты пытались оптимизировать транспорт, изменяя их, локальная часть ДОЛЖНА интерпретироваться и назначаться семантикой только хостом, указанным в доменной части адреса.

Так что да, часть перед «@» может быть чувствительна к регистру, так как она полностью находится под контролем хост-системы.На практике, однако, ни одна из широко используемых почтовых систем не различает разные адреса в зависимости от регистра.

Однако часть после знака @ является доменом и, согласно RFC 1035, раздел 3.1,

«Серверы имен и распознаватели должны сравнивать [домены] без учета регистра»

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

38 голосов
/ 24 октября 2012

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

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

25 голосов
/ 04 декабря 2015

Я опаздываю к этому посту, но я хочу сказать что-то немного другое ...

>> "Are email addresses case sensitive?"

Ну, "Это зависит ..." (TM)

Некоторые организации на самом деле считают, что это хорошая идея, и их серверы электронной почты применяют чувствительность к регистру.

Итак, для этих сумасшедших мест «Да, электронные письма чувствительны к регистру».

Примечание. Если в спецификации указано, что вы можете что-то сделать, это еще не значит, что это хорошая идея.

Принцип KISS предполагает, что наш вариант использования системынечувствительные электронные письма.

Принимая во внимание, что принцип Надежности предполагает, что мы принимаем чувствительные к регистру электронные письма.

Решение:

  • Храните электронные письма с учетом регистра
  • Отправка электронных писем с чувствительностью к регистру
  • Выполнение внутреннего поиска с нечувствительностью к регистру

Это будет означать, что если это электронное письмо уже существует: user@x.com

... и другой пользователь приходит и хочет использовать это письмо: USER@x.com

... что наша логика поиска без учета регистра вернет сообщение об ошибке «Этот адрес электронной почты уже существует».

Теперь у вас есть решение: Является ли это решение адекватным в вашем случае?

Если нет, вы могли бы взимать комиссионный сбор с тех клиентов, которым требуется поддержка их чувствительных к регистру электронных писем, и реализовывать пользовательскую логику, которая позволяет USER@x.comв вашу систему, даже если user@x.com уже существует.

В этом случае ваша логика поиска / проверки электронной почты может выглядеть примерно так: псевдокод:

if (user.paidEmailFee) {
   // case sensitive email
   query = "select * from users where email LIKE ' + user.email + '"
} else {
   // case insensitive email
   query = "select * from users where email ILIKE ' + user.email + '"
}

Таким образом, выв основном обеспечивает учет нечувствительности к регистру, но позволяет клиентам оплачивать эту поддержку, если они используют системы электронной почты, поддерживающие такую ​​ерунду.

ps ILIKE - это ключевое слово PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html

8 голосов
/ 27 апреля 2016

RFC 5321 2,4. Общие принципы синтаксиса и модель транзакции

Реализации SMTP ДОЛЖНЫ позаботиться о сохранении регистра почтового ящика. местная-часть. В частности, для некоторых хостов пользователь "smith" отличается от пользователя "Smith".

Домены почтовых ящиков следуют обычным правилам DNS и, следовательно, не соответствуют действительности. чувствительный

1 голос
/ 01 июня 2017

Per @ l3x, это зависит.

Очевидно, что существует два набора общих ситуаций, в которых правильный ответ может быть другим, наряду с третьим, который не является таким общим:

a) Вы являетесь пользователем, отправляющим личные письма :

Очень немногие современные системы электронной почты реализуют чувствительность к регистру, поэтому вы вероятно способны игнорировать регистр и выбирать тот, который вам нравитсяс помощью.Нет никакой гарантии, что все ваши письма будут доставлены - но так мало писем будут негативно затронуты, так что вы не должны беспокоиться об этом.

b) Вы разрабатываете почтовое программное обеспечение:

См. Отрывок RFC5321 2.4 внизу.

При разработке почтового программного обеспечения вы хотите, чтобы соответствовал RFC.Вы можете сделать адреса электронной почты своих пользователей нечувствительными к регистру, если хотите (и, вероятно, должны).Но для того, чтобы быть RFC-совместимым, вы ДОЛЖНЫ трактовать внешние адреса как чувствительные к регистру .

c) Управление списками адресов электронной почты, принадлежащими бизнесу, в качестве сотрудника :

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

С юридической точки зрения, если вы удалите дубликат без подтверждения / разрешения с обоих адресов, вы можете понести ответственность за утечку личной информации / аутентификации на неавторизованный адрес просто потому, что два фактически отдельных получателя имеют один и тот же адрес с разными регистрами .

Выдержка из RFC5321 2.4:

Локальная часть почтового ящика ДОЛЖНА БЫТЬ обрабатываться с учетом регистра.Поэтому реализации SMTP ДОЛЖНЫ позаботиться о том, чтобы сохранить случай локальных частей почтового ящика.В частности, для некоторых хостов пользователь «smith» отличается от пользователя «Smith».Однако использование чувствительности к регистру локальных частей почтового ящика затрудняет взаимодействие и не поощряется.

...