有效电子邮件地址的最大长度是多少?它是由任何标准定义的吗?
8 回答
电子邮件地址不得超过254 个字符。
这在提交的勘误表后被 IETF 接受。任何给定地址的完整诊断都可以在线获得。RFC 3696 的原始版本将 320 描述为最大长度,但 John Klensin 随后接受了一个不正确的值,因为路径被定义为
Path = "<" [ A-d-l ":" ] Mailbox ">"
因此邮箱元素(即电子邮件地址)周围有尖括号以形成路径,路径的最大长度为 254 个字符,以将路径长度限制为 256 个字符或更少。
RFC 5321中规定的最大长度:
反向路径或正向路径的最大总长度为 256 个字符。
RFC 3696 已在此处更正。
人们应该特别注意针对 RFC 3696 的勘误表。其中三个规范示例实际上是无效地址。
我整理了几百个测试地址,您可以在http://www.dominicsayers.com/isemail找到这些地址
用户
用户名的最大总长度为 64 个字符。
领域
域部分最多 255 个字符(“@”后面的那个)
但是,RFC 2821的阅读有一个限制:
反向路径或正向路径的最大总长度为 256 个字符,包括标点符号和元素分隔符”。由于不适合这些字段的地址通常没有用,因此地址长度的上限通常应视为 256,但路径定义为:Path = “<” [ Adl “:” ] Mailbox “>” 除了 Mailbox 之外,转发路径将至少包含一对尖括号,这将电子邮件地址限制为 254 个字符。
为了帮助像我这样困惑的新手,回答“有效电子邮件地址的最大长度是多少?” 是254 个字符。
如果您的应用程序使用电子邮件,只需将您的字段设置为接受 254 个字符或更少,就可以了。
您可以在电子邮件上运行一堆测试,看看它在此处是否有效。http://isemail.info/
RFC 或 Request for Comments 是 Internet 工程任务组 (IETF) 的一种发布类型,将 254 个字符定义为限制。位于此处 - https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3
根据下面的文章:
https://www.rfc-editor.org/rfc/rfc3696(第 6 页,第 3 节)
提到:
“电子邮件地址有长度限制。该限制是“本地部分”(“@”之前)中最多 64 个字符(八位字节)和域部分(在“@”),总长度为 320 个字符。处理电子邮件的系统应该准备好处理这么长的地址,即使它们很少遇到。
因此,电子邮件地址的最大总长度为 320 个字符(“本地部分”:64 + “@”:1 + “域部分”:255,总和为 320)
另一个答案使水有点混浊。 简单的答案:我们控制的电子邮件 256 中共有 254 个字符 用于整个电子邮件地址,其中包括开头的隐含“<”和结尾的“>”。因此,剩下 254 个供我们使用。
TLDR 答案
给定一个电子邮件地址,例如...
me@example.com
长度限制如下:
- 整个电子邮件地址(又名:“路径”):即me@example.com --
256
最多字符数。 - Local-Part:即我——
64
字符最大值。 - 域:即example.com——
254
最多字符数。
来源——TLDR;
RFC 标准在不断发展,但如果您想在一行中获取 2009 IETF 源代码:
...地址长度的上限通常应被视为 256。(来源:RFC3696。)
来源——历史
SMTP 最初在RFC821中定义了路径是什么,发布于 1982 年 8 月,这是一个官方 Internet 标准(大多数 RFC 只是提议)。引用它...
...一个反向路径,指定邮件来自谁。
...一个转发路径,它指定邮件的收件人。
RFC2821于 2001 年 4 月发布,是已过时的标准,它定义了我们当前的本地部分、域和路径的最大值。2008 年 10 月发布的新标准草案RFC5321保持相同的限制。在这两个日期之间,RFC3696于 2004 年 2 月发布。它错误地将最大电子邮件地址限制引用为320
-characters,但此文档仅是“信息性”,并指出:“此备忘录为 Internet 社区提供信息。它确实不指定任何类型的互联网标准。” 所以,我们可以无视。
引用 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 个。
可悲的是,所有其他答案都是错误的。他们中的大多数都引用了 RFC 2821 或更高版本,甚至没有定义电子邮件地址。它所做的是定义路径。电子邮件地址由 RFC 2822(或更新版本)定义,并且可以更长。不是有效路径的有效地址示例如下:
(Firstname Lastname) user@domain
Firstname Lastname <user@domain>
这两个都是同一个邮箱,写法不同。因此,如果您的目标是将电子邮件地址存储在数据库中,则 254、256 或 320 个八位字节的限制可能太低,尽管在实践中,这很少会成为问题。