5

Этот комментарий привел меня к RFC 5322 § 3.4.1, который гласит:

An addr-spec is a specific Internet identifier that contains a locally
interpreted string followed by the at-sign character ("@", ASCII value
64) followed by an Internet domain. 

The locally interpreted string is either a quoted-string or a dot-atom.

If the string can be represented as a dot-atom (that is, it contains no
characters other than atext characters or "." surrounded by atext  
characters), then the dot-atom form SHOULD be used and the quoted-  
string form SHOULD NOT be used.  Comments and folding white space   
SHOULD NOT be used around the "@" in the addr-spec.

И мы можем видеть, что здесь есть atext .

atext           =       ALPHA / DIGIT / ; Any character except controls,
                        "!" / "#" /     ;  SP, and specials.
                        "$" / "%" /     ;  Used for atoms
                        "&" / "'" /
                        "*" / "+" /
                        "-" / "/" /
                        "=" / "?" /
                        "^" / "_" /
                        "`" / "{" /
                        "|" / "}" /
                        "~"

Сложив все это вместе, означает ли это, что адрес электронной почты email@"happy@guy.com" на самом деле является действительным адресом, поскольку в кавычках допускается использование символа @ ?

2 ответа2

11

Нет, это не действительно.

Часть после @ - это домен (в вашем примере "happy@guy.com").

Вы не можете иметь доменное имя с символом @ в.

Каковы допустимые символы для доменного имени и как долго это может быть?

Также проверьте RFC 1035 2.3.1:

Они должны начинаться с буквы, заканчиваться буквой или цифрой и содержать в качестве внутренних символов только буквы, цифры и дефис.

Больше информации:

2

Правила для электронных писем настолько ошеломительно сложны (и редко соблюдаются совершенно правильно), что вопрос о том, является ли электронное письмо действительным, не особенно полезен. Скорее, это вопрос того, сколько веб-сайтов примут вашу электронную почту. Чем более экзотичен адрес электронной почты, тем больше вероятность того, что вы столкнетесь с сайтами, которые его не принимают, даже если он соответствует стандарту RFC. Например, my.email@com технически является действительным электронным письмом, но вам будет трудно его использовать.

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

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

Этот вопрос от StackOverflow обсуждает проблемы довольно хорошо. Что бы ни стоило, этот веб-сайт позволяет вам проверить, действительно ли электронные письма действительны. Второй комментарий на странице приводит пример человека с действительным адресом электронной почты, который трудно использовать из-за его необычности.


Чтобы ответить на исходный вопрос: Нет, email@"happy@guy.com" не является действительным адресом электронной почты. Но даже если бы это было так, я бы предостерег от его использования, и если пользователь утверждает, что это его электронное письмо, вы все равно должны отправить ему электронное письмо с подтверждением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .