提问人:Stalker 提问时间:3/21/2012 最后编辑:Luke GirvinStalker 更新时间:6/15/2023 访问量:246281
电子邮件地址是否区分大小写?
Are email addresses case sensitive?
问:
我已经读到,按照标准,电子邮件的第一部分是区分大小写的,但是我试图将电子邮件发送到 ,并且 - 它已经到达了每种情况。[email protected]
[email protected]
[email protected]
邮件服务器如何处理用户名?是否有可能错过案例并且该消息无法传递?使用完全相同的字母大小写真的非常重要吗,就像在提供电子邮件地址时注册时所写的一样?
答:
标准邮箱命名约定定义为 “本地part@domain”;当代用法允许更广泛的 应用程序而不是简单的“用户名”。因此,由于 当中间主机尝试 通过修改它们来优化传输,本地部分必须是 仅由在 地址的域部分。
所以是的,“@”前面的部分可能区分大小写,因为它完全在主机系统的控制之下。然而,在实践中,没有广泛使用的邮件系统根据大小写区分不同的地址。
但是,@ 符号后面的部分是域,根据 RFC 1035 第 3.1 节,
“名称服务器和解析器必须以不区分大小写的方式比较 [域]”
简而言之,您可以安全地将电子邮件地址视为不区分大小写。
评论
我知道这是一个老问题,但我只想在这里发表评论:在任何程度上,电子邮件地址都区分大小写,大多数用户积极使用需要大写的电子邮件地址是“非常不明智的”。他们很快就会停止使用这个地址,因为他们会丢失很多邮件。(除非他们有特定的理由使事情变得困难,并且他们只期望来自他们认识的特定发件人的邮件。
这是因为存在不完美的人类和不完美的软件,(令人惊讶!)它们将假设所有电子邮件都是小写的,因此,这些人和软件将使用地址的“小写版本”发送消息,而不管它是如何提供给他们的。如果收件人无法收到此类邮件,他们很快就会注意到他们丢失了很多邮件,并切换到仅小写的电子邮件地址,或者将他们的服务器设置为不区分大小写。
评论
这篇文章来晚了,但我有一些稍微不同的话要说......
>> "Are email addresses case sensitive?"
好吧,“这要看情况......” (TM)
一些组织实际上认为这是一个好主意,他们的电子邮件服务器强制区分大小写。
所以,对于那些疯狂的地方,“是的,电子邮件是区分大小写的。
注意:仅仅因为规范说你可以做某事并不意味着这样做是一个好主意。
KISS的原理表明,我们的系统使用不区分大小写的电子邮件。
而稳健性原则建议我们接受区分大小写的电子邮件。
溶液:
- 存储区分大小写的电子邮件
- 发送区分大小写的电子邮件
- 执行不区分大小写的内部搜索
这意味着如果此电子邮件已经存在:[email protected]
...另一个用户出现并希望使用此电子邮件:[email protected]
...不区分大小写的搜索逻辑将返回“该电子邮件已存在”错误消息。
现在,你要做出一个决定:这个解决方案是否适合你的情况?
如果没有,您可以向那些需要支持其区分大小写的电子邮件的客户收取便利费,并实施允许 [email protected] 进入您的系统的自定义逻辑,即使 [email protected] 已经存在。
在这种情况下,您的电子邮件搜索/验证逻辑可能类似于以下伪代码:
if (user.paidEmailFee) {
// case sensitive email
query = "select * from users where email LIKE ?"
} else {
// case insensitive email
query = "select * from users where email ILIKE ?"
}
这样一来,您主要是强制执行不区分大小写,但如果客户使用支持此类废话的电子邮件系统,则允许他们为此支持付费。
p.s. ILIKE 是一个 PostgreSQL 关键字:http://www.postgresql.org/docs/9.2/static/functions-matching.html
评论
%
_
query = ...
query = // Insert case-sensitive/insensitive search here
IETF公司开放标准 RFC 5321 2.4. 一般语法原则和事务模型
SMTP 实现必须注意保留邮箱的大小写 本地零件。特别是,对于某些主机,用户“smith”是 与用户“史密斯”不同。
邮箱域遵循正常的 DNS 规则,因此不是大小写 灵敏
根据@l3x,这取决于。
显然,有两组一般情况的正确答案可能不同,第三组情况不那么普遍:
a) 您是发送私人邮件的用户:
很少有现代电子邮件系统实现区分大小写,因此您可以忽略大小写并选择您喜欢使用的任何大小写。不能保证您的所有邮件都会被送达 - 但很少有邮件会受到负面影响,您不必担心。
b) 您正在开发邮件软件:
请参阅底部RFC5321 2.4 摘录。
在开发邮件软件时,您希望符合 RFC。如果您愿意,可以使自己用户的电子邮件地址不区分大小写(您可能应该这样做)。但为了符合 RFC,您必须将外部地址视为区分大小写。
c) 以员工身份管理企业拥有的电子邮件地址列表:
同一电子邮件收件人可能会多次添加到列表中 - 但使用不同的大小写。在这种情况下,尽管地址在技术上不同,但可能会导致收件人收到重复的电子邮件。您处理这种情况的方式与情况 a) 类似,因为您可以将它们视为重复项并删除重复条目。但是,最好将这些情况视为特殊情况,向两个地址发送“提醒”邮件,询问他们电子邮件地址的大小写是否准确。
从法律角度来看,如果您在未经确认/许可的情况下从两个地址删除重复项,您可能会对将私人信息/身份验证泄露给未经授权的地址负责,仅仅因为两个实际上独立的收件人具有相同的地址,但情况不同。
摘自RFC5321 2.4:
邮箱的本地部分必须区分大小写。 因此,SMTP 实现必须注意保留以下情况 邮箱本地部件。特别是,对于某些主机,用户“smith” 与用户“史密斯”不同。然而,利用这个案例 邮箱本地部件的敏感性阻碍了互操作性,并且 气馁。
评论