我认识到电子邮件地址基本上可以无限长,因此我在varchar电子邮件地址字段上施加的任何大小都是任意的。但是,我想知道“标准”是什么?你们有多长时间制作它? (姓名字段的相同问题......)
更新:显然,电子邮件地址的最大长度为320(< = 64名称部分,< = 255域名)。你用这个吗?
答案 0 :(得分:155)
理论限制真的很长,但你真的需要担心这些长电子邮件地址吗?如果有人无法使用100-char电子邮件登录,您真的关心吗?我们实际上更喜欢他们不能。
一些统计数据可能会对这个问题有所了解。我们分析了一个拥有超过1000万个电子邮件地址的数这些地址未得到确认,因此存在无效地址。以下是一些有趣的事实,
我们通过丢弃超过40的任何东西来清理数据库。好消息是没有人抱怨,但坏消息是没有很多记录被清除。
答案 1 :(得分:16)
我过去刚刚做了255,因为这是一个如此根深蒂固的短暂但不太短的输入标准。那,我是一个习惯的生物。
但是,由于最大值是319,我在列上会nvarchar(320)
。要记住@
!
nvarchar
将不会使用您不需要的空间,因此如果您只有20个字符的电子邮件地址,则只占用20个字节。这与nchar
相反,总是占用它的最大值(右边用空格填充值)。
我还会使用nvarchar
代替varchar
,因为它是Unicode。鉴于电子邮件地址的波动性,这绝对是可行的方法。
答案 2 :(得分:8)
以下电子邮件地址仅为94个字符:
<强> i.have.a.really.long.name.like.seetharam.krishnapillai@AReallyLongCompanyNameOfSomeKind.com.au 强>
即使是一位92岁的技术人员也会想出如何注册一个不错的短邮件地址,只需使用它,而不是在注册页面中输入。
磁盘空间可能不是问题,但允许用户输入字段比它们需要的时间长许多至少有两个问题:
我喜欢50个字符:
123456789.123456789.123456789@1234567890123456.com
如果一百万用户中的一个用户必须使用其他电子邮件地址来使用我的应用,那就这样吧。
(统计显示,实际上没有人输入超过40个字符的电子邮件地址,例如:ZZ Coder的回答https://stackoverflow.com/a/1297352/87861)
答案 3 :(得分:4)
如果你真的是它的挂片,请创建一个用户名varchar(60),域varchar(255)。然后,您可以对域使用进行荒谬的统计,这比单个字段的速度要快一些。如果您对优化感到非常不满,那么这也将使您的SMTP服务器能够以更少的连接/更好的批处理发送电子邮件。
答案 4 :(得分:3)
RFC 5321(当前的SMTP规范,废弃RFC2821)声明:
4.5.3.1.1。本地部分
用户的最大总长度 名称或其他本地部分是64
八位位组。4.5.3.1.2。域
a的最大总长度 域名或号码是255个八位字节。
这仅适用于localpart @ domain,总共320个ASCII(7位)字符。
如果您计划规范化数据,可能将localpart和domain拆分为单独的字段,请记住以下内容:
答案 5 :(得分:3)
根据这篇文章,基于适当的RFC文档,它不是320而是254: http://www.eph.co.uk/resources/email-address-length-faq/
<强> 修改 强>: 使用WayBack机器: https://web.archive.org/web/20120222213813/http://www.eph.co.uk/resources/email-address-length-faq/
电子邮件地址的最大长度是多少?
254个字符
最大有效电子邮件似乎有些混乱 地址大小。大多数人认为它是320个字符(64 用户名字符+域名+ 1的255个字符 @符号的字符)。其他来源显示129(64 + 1 + 64) 或384(128 + 1 + 255,假设用户名长度翻倍 未来的)。
这种混乱意味着你应该注意'稳健性原则' (“开发人员应该仔细编写与之密切相关的软件 现存的RFC,但接受并解析来自可能不存在的对等体的输入 与那些RFC一致。“ - 维基百科”在编写软件时 处理电子邮件地址。此外,某些软件可能会瘫痪 通过天真的假设,例如认为50个字符就足够了 (例子)。您的200个字符的电子邮件地址可能在技术上有效 但如果大多数网站或应用程序拒绝它,那对你没有帮助。
实际的最大电子邮件长度目前为254个字符:
“RFC 3696的原始版本确实说320是最大值 但是John Klensin(ICANN)随后接受了这一点 错“。
“这源于域的最大长度的简单算法 (255个字符)+邮箱的最大长度(64个字符)+ @ 符号= 320个字符。错误。实际记录了这个芥末 RFC3696的原始版本。它在勘误表中得到纠正。 实际上RFC5321对路径元素的限制 SMTP事务256个字符。但这包括有角度的括号 在电子邮件地址周围,所以电子邮件地址的最大长度是 254个字符。“ - Dominic Sayers
答案 6 :(得分:1)
我使用varchar(64)我认为任何人都不能有更长的电子邮件
答案 7 :(得分:0)
对于电子邮件,无论规格如何,我几乎总是使用512(nvarchar)。姓名和姓氏相似。
真的,你需要看看你有多少关心有一些额外的数据。对我来说,主要是,这不是一个担心,所以我会在保守的方面犯错。但是,如果您通过逻辑和准确的方式决定,您需要节省空间,那么就这样做。但总的来说,对于场地大小保守,生活应该是好的。
请注意,可能并非所有电子邮件客户端都支持RFC,因此无论它说什么,您都可能会遇到不同的事情。