Email 电子邮件地址中是否允许使用大写字母?

Email 电子邮件地址中是否允许使用大写字母?,email,email-validation,Email,Email Validation,我们可以在域的“本地”部分使用的官方RFC文档(加上许多其他疯狂的东西) 然而,在现实世界中常见的是什么?规范中所说的是两件不同的事情。来自雅虎、谷歌或hotmail等大型提供商的电子邮件中不允许使用这些额外字符(!#$%&'*/=?^{124;})。此外,看到包含大写字母的电子邮件是非常非常罕见的(JohnDoe@example.com) 今天我给自己发了几封电子邮件,使用不同的大小写组合,发现我的电子邮件服务器都将它们视为同一个帐户,忽略了字母大小写不同的事实。换句话说,,JohnDoe@e

我们可以在域的“本地”部分使用的官方RFC文档(加上许多其他疯狂的东西)

然而,在现实世界中常见的是什么?规范中所说的是两件不同的事情。来自雅虎、谷歌或hotmail等大型提供商的电子邮件中不允许使用这些额外字符(
!#$%&'*/=?^{124;}
)。此外,看到包含大写字母的电子邮件是非常非常罕见的(JohnDoe@example.com)

今天我给自己发了几封电子邮件,使用不同的大小写组合,发现我的电子邮件服务器都将它们视为同一个帐户,忽略了字母大小写不同的事实。换句话说,,JohnDoe@example.com = johndoe@example.com发送到我的电子邮件服务器(包括我的免费电子邮件帐户)


我应该按照世界所选择的格式行事——并将所有ANSII电子邮件标准化/小写?还是允许用户注册多个帐户作为JohnDoe@example.com, johndoe@example.com,及JOHNdoe@example.com?

我个人会选择将所有电子邮件标准化/小写。这简化了您的工作,因为如果用户正在发送电子邮件或登录您的系统,则很容易错误键入电子邮件地址-JohnDoe@example.comvsjohnDoe@example.com. 正如yous所说,大型供应商已经做出了遵循这种模式的决定。即使您允许大写字母,也会混淆您的一般用户群,因为他们希望看到不同的东西(也称为全小写)。

也许,正确的折衷办法是让他们使用自己选择的大写字母注册,并在适当的情况下显示(“JOHNdoe@example.com收件箱”)。但是,您应该规范化大小写以进行唯一性检查,因为有许多行为不良的电子邮件发送者,例如,在发送之前将整个电子邮件地址大写。

该标准的原因是,非Unix系统可以以最小的麻烦参与ARPAnet和更高版本的Internet。(VMS和Tenex在前者中很常见,BITNET也有代表性。在后者中,至少需要3278个小写字符或升级的3270个终端。)现在,最好忽略localpart中的大小写,因为每个人都知道如何在必要时使用小写。

在Microsoft SQL server中,默认情况下,索引不区分大小写


如果在字段上放置唯一索引,则用户可以有一个读者友好的CamelCase名称,如JohnDoe@acme.org还有像这样的复制品johndoe@ACME.org将被自动拒绝。

那么大写是交付的标准,而小写是显示的标准吗?不,我不建议大写(大写)因为递送是正确的、好主意的,或者被大多数寄件人使用。但它被大量错误使用。正如我所说,您应该在适当的地方向用户显示原始地址。对于规范化,大小写都可以,只要你是一致的。@Xeoncross no如果你要发送到发送者写的地址,接收服务器可能区分大小写。我主要使用PostgreSQL,但是MySQL与你描述的不区分大小写的性质相同。然而,这不仅仅是存储——我还需要给这些帐户发送电子邮件。