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

8

官方RFC文档说明,我们可以在域名的“本地”部分中使用大小写字母(以及许多其他疯狂的事情)。

然而,在现实世界中常见的情况和规范所说的是两回事。像雅虎、谷歌或hotmail这样的大型提供商不允许在电子邮件中使用任何额外的字符(! # $ % & ' * / = ? ^ { | } ~)。此外,很少看到包含大写字母的电子邮件(JohnDoe@example.com)。

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

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

4个回答

5

也许,正确的折衷方案是允许用户使用他们想要的大小写来注册,并在适当的时候显示出来(例如:“JOHNdoe@example.com收件箱”)。但是,为了唯一性检查,您应该规范化大小写,因为有很多行为不端的电子邮件发送者会在发送之前将整个电子邮件地址大写。


那么大写是交付的标准,而小写是显示的标准吗? - Xeoncross
不,我并不是在建议将交付的地址转化为大写字母是正确的、好的想法或者被大多数发件人使用。但是它被相当数量的人错误地使用了。正如我所说,应该在适当的情况下向用户显示原始地址。对于规范化而言,无论是将字母变成小写还是大写都可以,前提是要保持一致。 - Matthew Flaschen
2
@Xeoncross 不,你应该将邮件发送到发件人写的同一地址,接收服务器可能区分大小写。 - stefan

3

在Microsoft SQL Server中,默认情况下,索引是大小写不敏感的。

如果您在字段上放置了唯一索引,则用户可以使用易于阅读的驼峰命名法名称,例如JohnDoe@acme.org,重复项如johndoe@ACME.org将自动被拒绝。


1
我主要使用PostgreSQL,然而MySQL也具有你所描述的不区分大小写的特性。然而,这不仅仅涉及存储 - 我还需要通过电子邮件发送这些账户信息。 - Xeoncross

2

标准的原因是为了使非Unix系统能够以最小的麻烦参与ARPAnet和后来的互联网。(VMS和Tenex在前者中很常见,BITNET也有代表。在后者中,小写字母需要3278或升级的3270终端。)如今,在本地部分忽略大小写是最好的选择,因为每个人都已经弄清楚了出于必要性而使用小写字母。


1
我个人会选择将所有电子邮件标准化/小写。这会简化您的工作,因为如果用户在您的系统上发送电子邮件或登录,很容易输错电子邮件地址-例如,JohnDoe@example.com与johnDoe@example.com。正如您所说,大型提供商已经做出了遵循这种模式的决定。即使允许使用大写字母,也会使您的普通用户群体感到困惑,因为他们已经习惯了不同的内容(即全部小写)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接