19

理论上电子邮件是区分大小写的。但是使用电子邮件作为系统登录我希望它们都是小写的(即 john@smith.com 和 John@smith.com 不能是不同的用户)。

对于某些在其电子邮件地址中使用区分大小写的用户来说,这可能是个问题吗?有人在外面用吗?

编辑:因为有很多“保存时保留大小写,登录时忽略”答案:如果我真的有两个不同的用户 john@smith 和 John@smith,这个系统会崩溃,不是吗?

示例:john@smith 和 John@smith 的密码为 123。我如何知道哪一个刚刚通过了身份验证?

4

8 回答 8

17

不要丢弃数据。存储您收到的电子邮件地址或用户名,除了修剪字符串的两端。

发送电子邮件时,请使用用户提供的大小写。仅仅因为区分大小写很少见是没有理由不处理它 - 否则该用户不会收到邮件,甚至可能无法注册。

在对用户进行身份验证时,您可以选择对小写(或大写)字符串进行比较,以便忽略大小写。

因此,通过保留用户输入数据,您突然为自己提供了选择:是否在身份验证时进行区分大小写的比较,以及在发送邮件时是否使用区分大小写的电子邮件地址。即使您现在不选择利用它们,保存数据的目的是让您(或其他开发人员)在以后有这些选择。

于 2009-10-01T12:31:17.177 回答
15

根据RFC 2821

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

因此,虽然您可以处理区分大小写的电子邮件地址,但不鼓励您这样做。

于 2009-10-01T11:31:14.427 回答
7

恕我直言,以用户输入的方式存储和显示地址,不仅因为 RFP 说您必须尊重大小写,而且因为如果用户有偏好,您应该尊重该偏好。这是他们的电子邮件地址。我不喜欢系统重新格式化我提供给他们的个人详细信息。例如,您会惊讶于有多少系统坚持称我为“Tj”——这显然是错误的——而不是“TJ”(+1 表示正确)。

因此,如果 John Smith 注册为“ John.Smith@example.com”,那么这就是 John Smith 希望查看他的电子邮件地址的方式(如果他有偏好)。我可能不会让其他人使用“ john.smith@example.com”电子邮件地址注册,因为它与其他帐户的地址相同的可能性非常大,但我不会对用户的地址格式或其他详细信息感到不满。最多我可能会提示他们,如果他们给了我很多全大写的喊叫,问他们是否不喜欢更……温和的东西。

于 2009-10-01T11:50:17.070 回答
6

有些系统区分大小写。

我建议保留它,但忽略 la windows 文件系统。

即记住,john 在 John@smith.com 上注册,但让他以 JOHN@smith.com、john@smith.com 或 JohN@smith.com 身份登录。

这不太可能引起冲突,如果有人有区分大小写的电子邮件,我相信他们会知道的。

于 2009-10-01T11:32:56.170 回答
0

是的,这是一个问题。我刚刚在Linux(运行exim)上做了一个小测试,只有大小写正确的邮件才能到达邮箱......

我认为大多数商业邮件提供商都会规范所有电子邮件地址,但通常您必须使用正确的大小写!

于 2009-10-01T11:29:51.370 回答
0

这个链接说“几乎没有任何电子邮件服务或 ISP 确实强制使用区分大小写的电子邮件地址”。

于 2009-10-01T11:29:51.837 回答
0

我不知道有任何实现可以区分具有相同字母但大小写不同的电子邮件地址。

我从未听说过仅仅因为案例错误而无法正确传输消息。

于 2009-10-01T11:30:53.490 回答
0

如果您将其用作系统登录名,则无需。通常(在谈论登录时),admin 和 Admin 是同一个人...... JohnDoe 和 johndoe 也是如此......而且,使用允许区分大小写的电子邮件提供商的人数太少了。

于 2009-10-01T11:42:57.223 回答