我不打算提出完整的电子邮件验证。我试图阻止一个特定的问题:
我已经让用户使用我网站上的联系表单,其中要求提供“Name
”,“Email
”和“Message
”,并且只是出于搞笑的错误,我获取信息,“First Name
”,“Last Name
”,“Message
”,我想,“我在哪里留下黄页?”
所以,我不想验证电子邮件,我只是想提醒大家,这不是姓,我们要求发送电子邮件。
我在想我检查一个@
符号,我想确保我不会忽略有效的电子邮件。
是否有有效的电子邮件,其中没有@
个符号?
答案 0 :(得分:4)
如RFC5322第3.4.1节中所定义:
addr-spec是包含a的特定Internet标识符 本地解释的字符串后跟at符号字符(“@”, ASCII值64)后跟互联网域。
答案 1 :(得分:2)
根据RFC5322:
addr-spec是一个特定的Internet标识符,它包含一个本地解释的字符串,后跟at符号字符(“@”,ASCII值64),后跟Internet域。
所以,是的,所有电子邮件地址都必须包含@
字符。
在互联网接管世界之前, 可能使电子邮件地址具有其他格式,例如FidoNet邮件地址1:170/918.10
,FidoNet节点上的用户编号10 {{1 }}
但考虑到互联网用户与FidoNet用户的比例目前大约为数十亿或更多,这仅仅是为了历史利益。
答案 2 :(得分:1)
所有有效的电子邮件地址都包含@符号。您可以阅读Internet邮件格式标准以获取更多信息:http://tools.ietf.org/html/rfc5322
具体为3.4.1。地址规范:https://tools.ietf.org/html/rfc2822#section-3.4.1
答案 3 :(得分:1)
是的,根据 RFC5322,鉴于 local-name@domain.com
... 的基本格式,每个电子邮件地址都必须有一个 at 符号。
addr-spec 是一个特定的 Internet 标识符,它包含一个本地解释的字符串,后跟 at-sign 字符(“@”,ASCII 值 64),后跟一个 Internet 域。
但请确保不要只验证一个 at-sign,因为一个电子邮件地址可能有多个。毕竟,还有其他 RFC!
RFC2822 使我们能够在电子邮件地址中使用带引号的字符串...
<块引用>3.2.2.带引号的字符
有些字符是为特殊解释保留的,例如 分隔词汇标记。允许将这些字符用作 未解释的数据,提供引用机制。
quoted-pair = ("" text) / obs-qp
所以 "@"@gmail.com
是一个有效的电子邮件地址。
也不要忘记RFC5321!这定义了另一个基本过程,用于在您的电子邮件地址中包含任意数量的 @
符号...
请注意,反斜杠“\”是一个引号字符,用于 指示下一个字符将按字面使用(而不是 它的正常解释)。例如,“Joe\,Smith”表示一个 单个九个字符的用户名字符串,逗号是 该字符串的第四个字符。
那么,\@@gmail.com
也是技术上有效的电子邮件地址。
答案 4 :(得分:0)
今天,是的(请参阅其他答案);但历史性的答案是:不。
原始标准(RFC822 ff)使得拥有非常简短,有效且有效的电子邮件地址(例如“ i.me”)成为可能。 (DDJ曾经参加过比赛。) @只是表示主机中的邮箱;因此,如果您拥有整个主机(例如您自己的服务器或PC),则不需要@。
检查电子邮件地址的规则过去很复杂。为了在某种程度上简化它们并适应许多损坏的“检查器”的不良作法,最初将其无效的假设(最初是无效的)最终纳入了官方标准。