电子邮箱是否区分大小写?

我读过标准的第一部分电子邮件是区分大小写的,但是我试图发送电子邮件到name@example.comName@example.comNAME@example.com – 它已经到达每个案例。

邮件服务器如何处理用户名? 有没有可能错过案件,这个消息不会被传递? 使用完全相同的字母大小写是否非常重要,正如在给予您的电子邮件地址时注册时所写的一样?

从RFC 5321,章节2.3.11:

标准邮箱命名约定被定义为“local-part @ domain”; 当代用法允许比简单的“用户名”更广泛的应用程序集。 因此,由于中间主机试图通过修改传输来优化传输的问题已经有很长的历史了,所以局部部分必须被解释,并且只能由地址的域部分指定的主机来分配语义。

所以是的,“@”之前的部分可以区分大小写,因为它完全在主机系统的控制之下。 实际上,没有广泛使用的邮件系统根据情况区分不同的地址。

@符号后的部分是域,根据RFC 1035的3.1节,

“名称服务器和parsing器必须以不区分大小写的方式比较[域]

简而言之,您可以安全地将邮件地址视为不区分大小写。

我知道这是一个老问题,但我只想在这里发表评论:在任何程度上,电子邮件地址是区分大小写的,大多数用户将是“非常不明智”,积极使用需要大写的电子邮件地址。 他们很快就会停止使用该地址,因为他们会错过很多邮件。 (除非他们有一个特定的理由来让事情变得困难,并且他们希望邮件只来自他们知道的特定发件人。)

这是因为不完善的人类以及不完善的软件存在(惊喜!),假设所有电子邮件都是小写字母,因此,这些人类和软件将使用地址的“小写版本”发送消息,而不pipe它是如何提供的给他们。 如果收件人无法收到此类邮件,则在不久之前他们会注意到他们错过了很多,并且切换到小写字母的电子邮件地址,或者将其服务器设置为不区分大小写。

这个post迟到了,但是我有一些细微的不同之处。

 >> "Are email addresses case sensitive?" 

那么“It Depends …” (TM)

有些组织实际上认为这是一个好主意,他们的电子邮件服务器强制区分大小写。

所以,对于那些疯狂的地方,“是的,电子邮件是区分大小写的”。

注意:仅仅因为规范说你可以做一些事情并不意味着这样做是一个好主意。

KISS的原则表明我们的系统使用不区分大小写的电子邮件。

鲁棒性原则表明我们接受区分大小写的电子邮件。

解:

  • 存储区分大小写的电子邮件
  • 发送大小写敏感的电子邮件
  • 执行不区分大小写的内部search

这意味着如果这封电子邮件已经存在:user@x.com

…和另一个用户来了,想用这个电子邮件:USER@x.com

…我们不区分大小写的search逻辑将返回一个“该电子邮件已经存在”错误消息。

现在,你有一个决定: 在你的情况下,这个解决scheme是否足够?

如果不是这样,那么您可以向需要支持区分大小写的电子邮件的客户收取便利费,并实施允许将USER@x.com放入系统的自定义逻辑,即使user@x.com已经存在。

在这种情况下,您的电子邮件search/validation逻辑可能看起来像这样的伪代码:

 if (user.paidEmailFee) { // case sensitive email query = "select * from users where email LIKE ' + user.email + '" } else { // case insensitive email query = "select * from users where email ILIKE ' + user.email + '" } 

通过这种方式,您大多数情况下都会强制执行不区分大小写,但是如果使用支持这种废话的电子邮件系统,则允许客户为此支持付费。

ps ILIKE是一个PostgreSQL关键字: http : //www.postgresql.org/docs/9.2/static/functions-matching.html

RFC 5321 2.4。 一般句法原则和交易模型

SMTP实现必须注意保留邮箱本地部分的情况。 特别是对于一些主机,用户“史密斯”与用户“史密斯”不同。

邮箱域遵循正常的DNS规则,因此不区分大小写

Per @ l3x,这取决于。

显然有两套一般的情况,正确答案可能不同,另外三种不一般:

a) 您是发送私人邮件的用户

很less有现代化的电子邮件系统实现区分大小写,所以你可能很好地忽略大小写,并select你喜欢使用的任何情况。 不能保证所有的邮件都能发送 – 但是这么less的邮件会受到负面影响,您不必担心。

b) 您正在开发邮件软件

请参阅底部的RFC5321 2.4摘录。

当你正在开发邮件软件时,你想要符合RFC。 如果你想(你可能应该),你可以使自己的用户的电子邮件地址不区分大小写。 但是为了符合RFC,您必须将外部地址视为区分大小写

c) 作为员工pipe理企业拥有的电子邮件地址列表

同一个电子邮件收件人可能会多次添加到列表中,但使用不同的大小写。 在这种情况下,虽然地址在技术上有所不同,但可能会导致收件人收到重复的电子邮件。 你如何对待这种情况类似于情况a),因为你可能很好地将它们当作重复对象,并删除重复的条目。 然而,最好将这些情况作为特殊情况处理,向两个地址发送一个“提醒”邮件,询问他们是否相互重复,如果是这样,收件人会倾向于使用哪个电子邮件地址。

从法律的angular度来看,如果您从两个地址中删除没有确认/许可的副本,则可能需要负责私人信息/身份validation泄露到未经授权的地址,这是因为两个实际上单独的收件人具有相同的地址且具有不同的情况

摘自RFC5321 2.4:

邮箱的本地部分必须被视为区分大小写。 因此,SMTP实现必须注意保留邮箱本地部分的情况。 特别是对于一些主机,用户“史密斯”与用户“史密斯”不同。 但是,利用邮箱本地部分的大小写敏感性会妨碍互操作性,因此不鼓励。

我只能想到一个有用的理由来检索区分大小写的电子邮件:避免垃圾邮件。 告诉你的朋友和同事他们必须使用大写和小写的适当组合。 (MyEmAiL@domain.com)我认为垃圾邮件发送者不太可能遵循这样的规则,尤其是当您的地址从服务器传递到服务器时。

如果你的朋友的电子邮件客户端devise不当,缺点可能是。 无论他们的意图如何,他们可能无法遵守。 对于存储数千个地址并更频繁地对其数据进行混洗的合法业务伙伴而言,情况尤其如此。 他们不会给你同样的个人关注。

我不会select这样做,但是我认为如果你想要一个垃圾邮件less的“仅限朋友”的电子邮件地址,这将是非常有效的。 虽然可能对商业联系不太好。