【问题标题】:Do all valid emails contain at least one @ symbol?是否所有有效的电子邮件都至少包含一个 @ 符号?
【发布时间】:2015-03-14 17:29:16
【问题描述】:

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

我已经让用户使用我网站上的联系表格,它要求输入“Name”、“Email”和“Message”,只是由于搞笑的错误,我得到了信息,“@ 987654324@"、"Last Name"、"Message",我心想,'该死的,我把黄页放在哪里了?'

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

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

是否存在不含@ 符号的有效电子邮件?

【问题讨论】:

  • @SteveMitcham,不,我的问题不是关于验证,而是关于防止特定用户错误。
  • 我清除了重复的评论,但该页面包含以下答案中的一些信息。
  • 我在南非有个表哥Jurgen MBeki@,你这个麻木不仁 :-)
  • 谢谢!是的,在发布我自己的问题之前,我已经阅读了许多其他问题。感谢分享!
  • @paxdiablo 他会没事的。只要他的电子邮件也有@符号:)

标签: javascript validation email


【解决方案1】:

根据 RFC5322:

addr-spec 是一个特定的 Internet 标识符,它包含一个本地解释的字符串,后跟 at-sign 字符(“@”,ASCII 值 64),后跟一个 Internet 域。

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

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

但鉴于互联网用户与 FidoNet 用户的比例目前约为 1 亿或更多,这仅是出于历史兴趣。

【讨论】:

    【解决方案2】:

    如 RFC5322 第 3.4.1 节中所定义:

    addr-spec 是一个特定的 Internet 标识符,它包含一个 本地解释的字符串,后跟 at 符号字符(“@”, ASCII 值 64) 后跟 Internet 域。

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

    【讨论】:

      【解决方案3】:

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

      特别是 3.4.1。 Addr-spec 规范:https://www.rfc-editor.org/rfc/rfc2822#section-3.4.1

      【讨论】:

        【解决方案4】:

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

        addr-spec 是一个特定的 Internet 标识符,它包含一个本地解释的字符串,后跟 at-sign 字符(“@”,ASCII 值 64),后跟一个 Internet 域。

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

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

        3.2.2.引用字符

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

        quoted-pair = ("" text) / obs-qp

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

        也不要忘记RFC5321!这定义了另一个基本过程,可以在您的电子邮件地址中添加任意数量的@ 符号...

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

        那么,\@@gmail.com 在技术上也是一个有效的电子邮件地址。

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-29
            • 2012-09-03
            • 1970-01-01
            • 2011-10-07
            • 2021-10-15
            • 2022-11-15
            • 2015-10-21
            • 1970-01-01
            相关资源
            最近更新 更多