邮件地址是否区分大小写?

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

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


从RFC 5321的2.3.11节中:

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

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

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

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

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


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

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


这个帖子迟到了,但是我说了一些稍微不同的东西......

>> "Are email addresses case sensitive?"

那么,“It Depends ...”(TM)

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

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

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

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

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

解:

  • 存储区分大小写的电子邮件
  • 发送区分大小写的电子邮件
  • 执行不区分大小写的内部搜索
  • 这意味着如果此电子邮件已存在:user@x.com

    ...和另一位用户出现并想要使用此电子邮件:USER@x.com

    ...我们不区分大小写的搜索逻辑会返回“That email already exists”错误消息。

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

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

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

    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

    链接地址: http://www.djcxy.com/p/92855.html

    上一篇: Are email addresses case sensitive?

    下一篇: Are email addresses allowed to contain non