有效电子邮件地址的最大长度是多少?

vol*_*oid 932 email validation email-address max

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

Dom*_*ers 1134

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

IETF在提交错误后接受了这一点.可在线获取任何给定地址的完整诊断.RFC 3696的原始版本将320描述为最大长度,但John Klensin随后接受了不正确的值,因为Path定义为

Path = "<" [ A-d-l ":" ] Mailbox ">"
Run Code Online (Sandbox Code Playgroud)

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

RFC 5321中指定的最大长度指出:

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

RFC 3696已在此处更正.

我现在整理了来自Cal Henderson,Dave Child,Phil Haack,Doug Lovell和RFC 3696的测试用例.总共158个测试地址.

我针对我能找到的所有验证器运行了所有这些测试.比较如下:http://www.dominicsayers.com/isemail

我会尽力保持这个页面了最新的,因为人们提高他们的验证.由于加州,Dave和菲尔他们在编制这些测试和我自己的验证建设性的批评帮助和合作.

人们应该特别注意针对RFC 3696勘误表.其中三个规范示例实际上是无效地址.

  • 那些允许在电子邮件地址中使用Unicode的新RFC标准呢? (7认同)
  • @Lodewijk RFC 3696不是标准,它只是试图帮助人们正确地解释基础标准.不幸的是,在他试图澄清这种情况时,克莱因斯包含了一些在勘误中得到纠正的严重错误.但是没有人读取勘误表,所以RFC 3693最终变得非常无益,具有讽刺意味. (4认同)
  • @之前有多少个字符,之后有多少个字符,或者没关系? (3认同)
  • 我相信使用国际化的电子邮件地址,将限制定义为254 _octets_,而不是字符更为正确.但我不确定.RFC 6531扩展了RFC 5321反向和正向路径以允许UTF-8字符,但RFC 5321明确指出限制为"256个八位字节",包括分隔符(故意改变RFC 2821,表示"字符").我相信不会取代256个八位字节的限制(254的减去2),并且对于具有多字节UTF-8字符的地址,有效的_character_限制会减少. (2认同)
  • 我偶然发现了与@AndreD 相同的问题,我同意他的看法。另一方面,dominicsayers.com/isemail 仍然说它是 254 个*字符*。有人知道更多吗?我相信它是八位字节而不是字符,但这意味着理论上最大的字符数可能是 63。我不敢相信新的 RFC 6531 没有处理这个问题,所以我不确定。 (2认同)
  • 当我确实发现某个精神病患者的电子邮件中有 254 个字符时,我应该关心吗?我希望这种人使用我的服务吗? (2认同)

Bob*_*Bob 36

320

细分看起来像这样

{64} {@ 255}

64 + 1 + 255 = 320

如果您要验证电子邮件,也应该阅读此内容

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

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

Waq*_*Haq 19

根据以下文章:

http://tools.ietf.org/html/rfc3696(第 6 页,第 3 节

其中提到:

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

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

  • 标准的这一部分已在勘误表中进行了修订,包括 254 个字符的总限制。有关详细信息和勘误表的链接,请参阅已接受的答案。 (4认同)

Art*_*lov 17

用户

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

域部分中最多255个字符("@"后面的字符)

但是,RFC 2821阅读中存在限制:

反向路径或前向路径的最大总长度为256个字符,包括标点符号和元素分隔符".由于不适合这些字段的地址通常不常用,因此地址长度的上限通常应视为256,但路径定义为:Path ="<"[Adl":"] Mailbox"> "除了邮箱之外,前向路径还将包含至少一对尖括号,它将电子邮件地址限制为254个字符.

  • 很酷,古老的rfc 1982 ...有rs的rfc5321 (7认同)

Jos*_*nce 12

为了帮助像我这样迷茫的新手,回答"有效电子邮件地址的最大长度是多少?" 是254个字符.

如果您的应用程序使用电子邮件,只需将您的字段设置为接受254个字符或更少,您就可以开始使用了.

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

RFC或Request for Comments是Internet工程任务组(IETF)的一种发布,它定义了254个字符作为限制.位于此处 - https://tools.ietf.org/html/rfc5321#section-4.5.3


Hol*_*ger 11

TLDR 答案

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

me@example.com
Run Code Online (Sandbox Code Playgroud)

长度限制如下:

  • 完整电子邮件地址(又名:“路径”):即me@example.com ——256最多字符数。
  • Local-Part:即——64最大字符数。
  • 域:即example.com——254最大字符数。

来源——TLDR;

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

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

来源——历史

SMTP 最初在RFC821中定义了路径,该 RFC821 于 1982 年 8 月发布,这是一个官方 Internet 标准(大多数 RFC 仅是提案)。引用它...

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

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

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

引用 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 个。


For*_*est 9

另一个答案使水有些浑浊。 简单的答案:电子邮件控件中共有254个字符 ,其中256 个字符用于整个电子邮件地址,该电子邮件地址的开头包含隐含的“ <”,末尾包含隐含的“>”。因此,剩下254个供我们使用。