【问题标题】:What is the maximum length of a valid email address?有效电子邮件地址的最大长度是多少?
【发布时间】:2010-09-28 00:41:47
【问题描述】:

有效电子邮件地址的最大长度是多少?它是由任何标准定义的吗?

【问题讨论】:

  • 什么样的电子邮件地址?互联网、X.400 还是其他?
  • 请注意,您的应用应该对电子邮件地址施加的长度限制可能理论最大值相同(比整个评论长)。其他答案讨论该问题,例如:stackoverflow.com/questions/1297272

标签: validation email max email-address


【解决方案1】:

电子邮件地址不得超过 254 个字符。

这已被 IETF 接受 submitted erratumonline 提供任何给定地址的完整诊断。 RFC 3696 的原始版本将 320 描述为最大长度,但 John Klensin 随后接受了一个不正确的值,因为路径被定义为

Path = "<" [ A-d-l ":" ] Mailbox ">"

因此 Mailbox 元素(即电子邮件地址)周围有尖括号以形成路径,路径的最大长度为 254 个字符,以将路径长度限制为 256 个字符或更少。

RFC 5321 中指定的最大长度状态:

反向路径或正向路径的最大总长度为 256 个字符。

RFC 3696 已更正 here

人们应该特别注意errata against RFC 3696。其中三个规范示例实际上是无效地址。

我整理了几百个测试地址,你可以在http://www.dominicsayers.com/isemail找到它们

【讨论】:

  • 允许在电子邮件地址中使用 Unicode 的新 RFC 标准怎么样?
  • @前面多少个字符,后面多少个,还是没关系?
  • @Lodewijk RFC 3696 不是标准,它只是试图帮助人们正确解释底层标准。不幸的是,在他试图澄清情况时,Klensin 包含了一些在勘误表中更正的严重错误。但是没有人阅读勘误表,因此具有讽刺意味的是,RFC 3693 最终变得非常无用。
  • 我相信对于国际化的电子邮件地址,将限制定义为 254 个八位字节 会更正确,而不是字符。但我不确定。 RFC 6531 扩展了 RFC 5321 反向和正向路径以允许 UTF-8 字符,但 RFC 5321 明确表示限制为“256 个八位字节”,包括分隔符(对 RFC 2821 的故意更改,其中表示“字符”)。我相信 256 个八位字节的限制(254 减 2)没有被取代,并且对于具有多字节 UTF-8 字符的地址,有效的 character 限制减少了。
  • 我偶然发现了与@AndreD 相同的问题,我同意他的观点。另一方面,dominicsayers.com/isemail 仍然说它是 254 个字符。有人知道更多吗?我相信它是八位字节而不是字符,但这意味着理论上最大字符数可能是 63。我不敢相信新的 RFC 6531 不能解决这个问题,所以我不确定。
【解决方案2】:

320

段看起来像这样

{64}@{255}

64 + 1 + 255 = 320

如果您正在验证电子邮件,您还应该阅读此内容:I Knew How To Validate An Email Address Until I Read The RFC

【讨论】:

  • 这是一篇可爱的文章,消除了关于电子邮件的各种神话,包括“max len == 320”。限制实际上是 254。
  • 可爱的文章在哪里?
  • 这个答案正确。此电子邮件有效,但绝对无法使用,因为 2821 使用 &lt;&gt; 括号将 MAIL/RCPT 命令限制为 256...
  • 是否包含user+inbox@domain格式的电子邮件?
  • 这个答案缺少参考。它可能来自 RFC3696,但是这部分标准在勘误表中进行了修改,以包括 254 个字符的总限制。有关勘误表的详细信息和链接,请参阅已接受的答案。
【解决方案3】:

用户

用户名的最大总长度为 64 个字符。

域部分最多 255 个字符(“@”后面的那个)

不过RFC 2821的读法有限制:

反向路径或正向路径的最大总长度为 256 字符,包括标点符号和元素分隔符”。自从 不适合这些字段的地址通常没有用处, 地址长度的上限通常应被认为是 256,但路径定义为:Path = “” 前向路径将至少包含一对尖括号 除了邮箱,它将电子邮件地址限制为 254 字符。

【讨论】:

  • 酷,1982 年的古老 rfc... SMTP 有 rfc5321
【解决方案4】:

为了帮助像我这样困惑的新手,请回答“有效电子邮件地址的最大长度是多少?” 254 个字符

如果您的应用程序使用电子邮件,只需将您的字段设置为接受 254 个字符或更少即可。

您可以在电子邮件上运行一堆测试,看看它在此处是否有效。 http://isemail.info/

RFC 或 Request for Comments 是 Internet 工程任务组 (IETF) 的一种发布类型,将 254 个字符定义为限制。位于这里 - https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3

【讨论】:

  • 您在哪里阅读“254 个字符”?我在您提供的链接中看到“反向路径或正向路径的最大总长度为 256”。 “254”上的 Ctrl+F 也找不到任何东西。
  • @HoldOffHunger There: rfc-editor.org/errata_search.php?rfc=3696&eid=1690 "但是,RFC 2821 对 MAIL 和 RCPT 命令中的地址长度有 254 个字符的限制。因为不适合这些字段的地址是通常没有用处,地址长度的上限通常应该被认为是 254。"
  • @MichaelGroße 谢谢!该信息实际上列在我的答案中(事实上,我列出了 #3696 等),在我无法得到回复后最终回答,但感谢您确认我对这个答案的预感。
【解决方案5】:

根据下面的文章:

https://www.rfc-editor.org/rfc/rfc3696(第 6 页,Section 3

上面提到:

"有长度限制 电子邮件地址。该限制最多为 64 个字符(八位字节) 在“本地部分”中(“@”之前),最多 255 个字符 (八位字节)在域部分(“@”之后),总长度为 320 人物。处理电子邮件的系统应准备好处理 这么长的地址,即使它们很少 遇到过。”

因此,电子邮件地址的最大总长度为 320 个字符 (“本地部分”:64 + “@”:1 + “域部分”:255,总和为 320)

【讨论】:

  • 能否请您提供 javascript 中的正则表达式来验证 320 个字符的电子邮件 ID?提前致谢。
  • 这部分标准在勘误表中进行了修改,包括总限制为 254 个字符。有关勘误表的详细信息和链接,请参阅已接受的答案。
  • 实际上在第 4 页第 3 节(对电子邮件地址的限制)tools.ietf.org/html/rfc3696#section-3
【解决方案6】:

其他答案使水有点混浊。 简单的答案:我们控制的电子邮件共有 254 个字符 256 用于整个电子邮件地址,其中包含隐含的“”结尾。因此,剩下 254 个供我们使用。

【讨论】:

    【解决方案7】:

    TLDR 答案

    给定一个电子邮件地址,例如...

    me@example.com
    

    长度限制如下:

    • 整个电子邮件地址(又名:“路径”):即 me@example.com -- 256 字符数上限。
    • 本地部分:即 me -- 64 字符数上限。
    • 域:即 example.com -- 254 字符数上限。

    来源——TLDR;

    RFC 标准在不断发展,但如果您想在一行中获得 2009 IETF 源代码:

    ...地址长度的上限通常应该被认为是 256。(来源:RFC3696。)

    来源——历史

    SMTP 最初定义了 1982 年 8 月发布的 RFC821 中的路径,即 an official Internet Standard(大多数 RFC 只是提议)。引用它...

    ...反向路径,指定邮件来自谁。

    ...一个转发路径,指定邮件的收件人。

    RFC2821 于 2001 年 4 月发布,是已过时的标准,它定义了我们当前的本地部分、域和路径的最大值。 2008 年 10 月发布的新标准草案RFC5321 保持相同的限制。在这两个日期之间,RFC3696 于 2004 年 2 月发布。它错误地将最大电子邮件地址限制引用为320-characters,但本文档仅是“信息性”,并指出:“本备忘录为互联网社区。它没有指定任何类型的互联网标准。”所以,我们可以忽略它。

    引用 RFC2821,即 RFC5321 中确认的现代公认标准...

    4.5.3.1.1。本地部分

    用户名或其他本地部分的最大总长度为 64 字符。

    4.5.3.1.2。域

    域名或号码的最大总长度为 255 个字符。

    4.5.3.1.3。路径

    反向路径或正向路径的最大总长度为 256 字符(包括标点符号和元素分隔符)。

    您会注意到,我指出域最大值为 254,而 RFC 指出域最大值为 255。这是一个简单的算术问题。一个 255 个字符的域,加上“@”符号,是一个 256 个字符的路径,这是最大路径长度。但是,空名称或空白名称是无效的,因此该域实际上最多有 254 个。

    【讨论】:

      【解决方案8】:

      遗憾的是,所有其他答案都是错误的。他们中的大多数都引用了 RFC 2821 或更高版本,甚至没有定义电子邮件地址。它所做的是定义paths。电子邮件地址由 RFC 2822(或更新版本)定义,并且可以更长。不是有效路径的有效地址示例如下:

      (Firstname Lastname) user@domain
      Firstname Lastname <user@domain>
      

      这两个都是同一个邮箱,写法不同。因此,如果您的目标是将电子邮件地址存储在数据库中,则 254、256 或 320 个八位字节的限制可能太低,尽管在实践中,这很少会成为问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-09
        • 2010-11-28
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 2013-03-12
        • 2010-12-08
        相关资源
        最近更新 更多