电子邮件地址区分大小写?

时间:2012-03-21 15:38:43

标签: email smtp rfc

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

邮件服务器如何处理用户名?是否有可能错过案例并且不会传递该消息?使用与提供电子邮件地址时注册时所写的完全相同的字母大小写真的非常重要吗?

5 个答案:

答案 0 :(得分:313)

来自RFC 5321,第2.3.11节:

  

标准邮箱命名约定定义为   “本地部分@域名”;当代用法允许更广泛的一套   应用程序比简单的“用户名”。因此,由于a   中间主机尝试过的长期问题历史   通过修改它们来优化传输,本地部分必须是   仅由指定的主机解释和分配语义   域名的一部分。

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

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

  

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

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

答案 1 :(得分:38)

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

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

答案 2 :(得分:25)

这篇文章迟到了,但我说的有点不同......

>> "Are email addresses case sensitive?"

嗯,"它取决于......" (TM)

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

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

  

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

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

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

<强>解决方案:

  • 以区分大小写的方式存储电子邮件
  • 发送区分大小写的电子邮件
  • 使用不区分大小写的方式执行内部搜索

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

...而另一位用户出现并希望使用此电子邮件:USER@x.com

...我们的不区分大小写的搜索逻辑会返回一个&#34;该电子邮件已经存在&#34;错误信息。

现在,您决定:在您的情况下该解决方案是否足够?

如果没有,您可以向那些要求支持其区分大小写的电子邮件的客户收取便利费,并实施允许USER@x.com进入您的系统的自定义逻辑,即使user@x.com已经存在。< / p>

在这种情况下,您的电子邮件搜索/验证逻辑可能看起来像这个伪代码:

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 + '"
}

这样,您通常会强制执行不区分大小写,但如果客户使用支持此类废话的电子邮件系统,则允许客户支付此费用。

P.S。 ILIKE是PostgreSQL关键字:http://www.postgresql.org/docs/9.2/static/functions-matching.html

答案 3 :(得分:8)

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

  

SMTP实施必须注意保留邮箱的情况   本地部分。特别是对于一些主机,用户&#34; smith&#34;是   不同于用户&#34;史密斯&#34;。

     

邮箱域遵循正常的DNS规则,因此不是案例   敏感

答案 4 :(得分:1)

Per @ l3x,取决于。

显然有两组一般情况,其中正确的答案可能不同,而第三部分则不一般:

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

很少有现代电子邮件系统能够实现区分大小写,因此您可能可以忽略大小写并选择您想要使用的任何案例。我们无法保证您的所有邮件都会被发送 - 但是很少有邮件会受到负面影响而您不应该担心它。

b)您正在开发邮件软件

请参阅底部的RFC5321 2.4摘录。

在开发邮件软件时,希望符合RFC标准。如果您愿意(并且您可能应该),可以使您自己用户的电子邮件地址不区分大小写。但为了符合RFC,您必须将外部地址视为区分大小写

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

可能会将同一个电子邮件收件人多次添加到列表中 - 但使用的是不同的案例。在这种情况下,虽然地址在技术上有所不同,但可能会导致收件人收到重复的电子邮件。您如何处理这种情况与情况a)类似,因为您可能可以将它们视为重复并删除重复条目。最好将这些视为特殊情况,但是,通过向两个地址发送“提醒”邮件,询问他们是否相互重复,如果是,则收件人更愿意使用哪个电子邮件地址。

从法律角度来看,如果您删除了没有来自两个地址的确认/许可的副本,您可以负责私人信息/身份验证泄露给未经授权的地址只是因为两个实际上独立的收件人具有具有不同情况的相同地址

摘自RFC5321 2.4:

  

邮箱的本地部分必须被视为区分大小写。   因此,SMTP实现必须注意保留的情况   邮箱本地部分。特别是对于某些主机,用户“smith”   与用户“史密斯”不同。但是,利用这个案子   邮箱本地部分的敏感性阻碍了互操作性   气馁。