所有有效的电子邮件是否至少包含一个@符号

Do all valid emails contain at least one @ symbol?

本文关键字:包含一 符号 是否 有效 电子邮件      更新时间:2023-09-26

我并不是想出完整的电子邮件验证。我正在尝试防止特定问题:

让用户使用我网站上的联系表格,它要求"Name","Email"和"Message",只是通过搞笑的错误,我得到了信息,"First Name","Last Name","Message",我对自己说,'该死的,我把黄页放在哪里了?

所以,我不想验证电子邮件,

我只是想提醒人们,我们要求的不是姓氏,而是电子邮件。

我想我检查了一个@符号,我想确保我没有忽略有效的电子邮件。

是否有没有@符号的有效电子邮件?

根据RFC5322:

addr-spec 是一个特定的互联网标识符,其中包含一个本地解释的字符串,后跟符号字符("@",ASCII 值 64),后跟一个互联网域。

所以,是的,所有电子邮件地址都必须具有@字符。

在互联网接管世界之前,电子邮件地址可以具有其他格式,例如FidoNet邮件地址1:170/918.10,FidoNet节点1:170/918上的用户编号10。

但考虑到互联网用户与FidoNet用户的比例目前约为数十亿或更多,这只是出于历史兴趣。

如RFC5322 Section 3.4.1 中所定义:

地址规范是一个特定的互联网标识符,其中包含本地解释的字符串后跟符号字符("@",ASCII 值 64),后跟一个因特网域。

https://www.rfc-editor.org/rfc/rfc5322

所有有效的电子邮件地址都包含 @ 符号。您可以阅读互联网消息格式标准以获取更多信息:https://www.rfc-editor.org/rfc/rfc5322

特别是 3.4.1.地址规范规范:https://www.rfc-editor.org/rfc/rfc2822#section-3.4.1

是的,根据RFC5322,每个电子邮件地址都必须有一个签名,考虑到local-name@domain.com的基本格式......

addr-spec 是一个特定的互联网标识符,其中包含一个本地解释的字符串,后跟符号字符("@",ASCII 值 64),后跟一个互联网域。

但请确保不要只验证一个签名,因为一个电子邮件地址可能有多个。 毕竟,还有其他 RFC!

RFC2822使我们能够在电子邮件地址中使用引号字符串...

3.2.2. 引用字符

某些字符保留用于特殊解释,例如分隔词法标记。 允许将这些字符用作未解释的数据,提供了引用机制。

引号对 = (" 文本)/obs-qp

因此"@"@gmail.com是一个有效的电子邮件地址。

也不要忘记RFC5321! 这定义了另一个基本程序,即在您的电子邮件地址中拥有任意数量的@标志......

请注意,反斜杠"''"是一个引号字符,用于指示下一个字符将按字面意思使用(而不是它的正常解释)。 例如,"Joe'',Smith"表示单个九个字符的用户名字符串,逗号为该字符串的第四个字符。

因此,'@@gmail.com也是一个技术上有效的电子邮件地址。

今天,是的(见其他答案); 但历史性的答案是:不。

原始标准(RFC822 ff)使得拥有极短,有效和有效的电子邮件地址(如"i.me")成为可能。(DDJ曾经举办过一场比赛。@ 只是表示主机中的邮箱;因此,如果您拥有整个主机(例如,您自己的服务器或PC),则不需要@。

检查电子邮件地址的规则过去和现在都很复杂。为了在一定程度上简化它们,并匹配许多损坏的"检查器"的不良做法,最初无效的假设电子邮件地址将包含@最终被纳入官方标准。