【问题标题】:Should uppercase letters be allowed in email addresses?电子邮件地址中是否应允许使用大写字母?
【发布时间】:2011-07-14 18:05:10
【问题描述】:

官方 RFC 文档 state 我们可以在域的“本地”部分使用 both upper and lowercase letters(以及许多其他疯狂的东西)。

但是,现实世界中的共同点 - 和规范所说的是两件不同的事情。来自 yahoo、google 或 hotmail 等大型提供商的电子邮件中不允许使用这些额外字符 (! # $ % & ' * / = ? ^ { | } ~)。此外,很少会看到包含大写字母的电子邮件 (JohnDoe@example.com)。

我今天使用不同的大小写组合给自己发送了几封电子邮件,发现我的电子邮件服务器都将它们视为同一个帐户,而忽略了字母大小写不同的事实。换句话说,JohnDoe@example.com = johndoe@example.com 到我的电子邮件服务器(包括我的免费电子邮件帐户)。

我应该采用世界选择的格式 - 并将所有 ANSII 电子邮件标准化/小写吗? 或者我应该允许用户将多个帐户注册为 JohnDoe@example.com、johndoe@example.com , 和 JOHNdoe@example.com?

【问题讨论】:

    标签: email email-validation


    【解决方案1】:

    也许,正确的折衷方案是让他们使用自己选择的大写进行注册,并在适当的地方显示(“JOHNdoe@example.com 收件箱”)。但是您应该规范化唯一性检查的大写,因为有许多行为不端的电子邮件发件人,例如发送前将整个电子邮件地址大写。

    【讨论】:

    • 那么大写是交付的标准,而小写是显示的标准?
    • 不,我并不是说发送的大写(大写)是正确的,一个好主意,被大多数发件人使用。但它被很多人错误地使用了。正如我所说,您应该在适当的地方向用户显示原始地址。对于规范化,只要您保持一致,小写或大写都应该没问题。
    • @Xeoncross 不,您应该发送到发件人写的同一地址,接收服务器可能区分大小写。
    【解决方案2】:

    在 Microsoft SQL Server 中,默认情况下,索引不区分大小写。

    如果您在字段上放置唯一索引,则用户可以使用易于阅读的 CamelCase 名称,例如 JohnDoe@acme.org,并且像 johndoe@ACME.org 这样的重复名称将被自动拒绝。

    【讨论】:

    • 我主要使用 PostgreSQL,但是,MySQL 具有与您描述的相同的不区分大小写的特性。但是,这不仅仅是存储 - 我还需要通过电子邮件发送这些帐户。
    【解决方案3】:

    该标准的原因是非 Unix 系统可以以最少的麻烦参与 ARPAnet 和后来的 Internet。 (VMS和Tenex在前者常见,BITNET也有代表。至少后者,小写字符需要3278或升级3270终端。)现在,最好在localpart忽略大小写,因为每个人都想通了必要时使用小写。

    【讨论】:

      【解决方案4】:

      我个人会选择标准化/小写所有电子邮件。这为您简化了事情,因为如果用户正在发送电子邮件或登录您的系统,则很容易输入错误的电子邮件地址 - JohnDoe@example.com 与 johnDoe@example.com。而且,正如你所说,大型供应商已经做出了遵循这种模式的决定。即使您允许使用大写字母,它也会使您的一般用户群感到困惑,因为他们已经开始期待不同的东西(也就是全部小写)。

      【讨论】:

        猜你喜欢
        • 2014-11-21
        • 2012-02-19
        • 1970-01-01
        • 2014-09-18
        • 2012-04-06
        • 1970-01-01
        • 2016-05-31
        • 2015-01-23
        相关资源
        最近更新 更多