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

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

467347 次浏览

320

这些片段看起来像这样

{64}@{255}

64+1+255=320

如果您正在验证电子邮件,您也应该阅读此内容:在阅读RFC之前,我知道如何验证电子邮件地址

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

这被IETF在提交的勘误表之后接受。任何给定地址的完整诊断都可用在线。RFC 3696的原始版本将320描述为最大长度,但John Klensin随后接受了一个不正确的值,因为路径定义为

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

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

rfc5321中指定的最大长度表示:

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

RFC 3696已更正这里

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

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

用户

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

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

但是,在RFC 2821中有一个限制

反向路径或正向路径的最大总长度为256字符,包括标点符号和元素分隔符”。由于不适合这些字段的地址通常没有用地址长度的上限通常应被视为256,但路径定义为:Path="<"[A-d-l “:” ] Mailbox">"正向路径将至少包含一对尖括号添加到邮箱,将电子邮件地址限制为254字符。

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

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

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

RFC或请求评论是Internet工程任务组(IETF)的一种发布类型,它定义了254个字符作为限制。位于此处-https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3

根据下面的文章:

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

其中提到:

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

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

其他答案有点浑浊的水。简单的答案:我们控制的电子邮件共有254个字符256用于整个电子邮件地址,其中包括开头隐含的“<”和结尾的“>”。因此,254留给我们使用。

TLDR答案

给定一个电子邮件地址,比如…

me@example.com

长度限制如下:

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

来源-TLDR;

RFC标准在不断发展,但如果您想在一行中包含2009年的IETF源:

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

来源:历史

SMTP最初在1982年8月发布的RFC821中定义了路径,即官方互联网标准(大多数RFC只是提案)。引用它…

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

…一个转发路径,它指定邮件是给谁的。

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

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

4.5.3.11.本地部分

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

4.5.3.12.领域

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

4.5.3.1

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

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

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

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

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