官方RFC文档state,我们可以在域的“本地”部分使用both upper and lowercase letters(以及许多其他疯狂的事情)。
然而,在现实世界中常见的是什么 - 而规范所说的是两件不同的事情。在来自大型提供商(如yahoo,google或hotmail)的电子邮件中,不允许使用这些额外字符(! # $ % & ' * / = ? ^ { | } ~
)。此外,非常非常罕见地看到包含大写字母的电子邮件(JohnDoe@example.com)。
我今天发了几封电子邮件,使用不同的大写和小写组合,发现我的电子邮件服务器都将它们视为同一帐户,而忽略了字母大小写不同的事实。换句话说,JohnDoe@example.com = johndoe@example.com到我的电子邮件服务器(包括我的免费电子邮件帐户)。
我应该采取全球选择的格式 - 并标准化/小写所有ANSII电子邮件吗?或者我应该允许用户注册多个帐户,如JohnDoe @ example.com,johndoe @ example.com和JOHNdoe@example.com?
答案 0 :(得分:4)
正确的妥协可能是让他们注册自己选择的大写字母,并在适当的时候显示(“JOHNdoe@example.com收件箱”)。但是你应该规范化唯一性检查的大小写,因为有很多行为不端的电子邮件发送者,例如在发送之前将整个电子邮件地址大写。
答案 1 :(得分:3)
在Microsoft SQL Server中,默认情况下,索引不区分大小写。
如果您在该字段上放置一个唯一索引,则该用户可以使用像JohnDoe@acme.org这样的读者友好的CamelCase名称,并且会自动拒绝像johndoe@ACME.org这样的重复索引。
答案 2 :(得分:2)
标准的原因是非Unix系统可以以最小的麻烦参与ARPAnet和后来的Internet。 (VMS和Tenex在前者中很常见,BITNET也有代表。至少在后者中,小写字符需要3278或升级3270终端。)现在,最好忽略localpart中的case,因为每个人都知道如何在必要时使用小写。
答案 3 :(得分:1)
我个人会选择标准化/小写所有电子邮件。这简化了您的工作,因为如果用户正在发送电子邮件或登录您的系统,则错误输入电子邮件地址非常简单 - JohnDoe@example.com vs johnDoe@example.com。而且,正如你所说,大型供应商已经做出了遵循这种模式的决定。即使你允许使用大写字母,也会让你的一般用户群感到困惑,因为他们已经开始期待不同的东西(AKA全部小写)。