在标准化电子邮件时是否应该始终删除这些点?

Should you always remove the dots when normalising email?

我正在查看所有用于电子邮件规范化的模块,大多数模块似乎默认删除电子邮件中的点。我知道 Gmail 会忽略点,但我的印象是许多其他提供商不会。

显然我不希望用户从同一个地址创建多个帐户,但我更担心很多人根本无法创建一个。

一个选择是只删除某些电子邮件的点,我猜...

非常感谢这方面的任何建议!

我决定自己回答这个问题,因为页面制作完成后出现的 links 实际上提供的 links 比我手动搜索 Whosebug 时发现的要好得多。显然我的搜索技巧还有待改进...

第一个 link 的第一个和第二个答案非常有用:

Do all email providers ignore periods in front of @?

Should I remove all dots before the @ sign in emails

我认为我要选择的选项如下: 我将在数据库中有 2 个电子邮件字段。一个是规范化的电子邮件,另一个是显示的电子邮件。 (规范化只会删除 gmail 地址的点。)

然后我会在用户登录时先查找规范化的地址,只有匹配到多个时,我才会参考原始地址来判断哪个是哪个。

我已经这样做了,因为我想让人们在登录时弄乱大小写,而且现在电子邮件地址的本地部分区分大小写似乎非常罕见。

如果我遗漏了什么,请告诉我!


编辑:

此外,对于那些使用节点的人来说,这个模块比我发现的其他模块更易于配置:

https://www.npmjs.com/package/validator

因此,出于我的目的,以下是我进行规范化所需的全部内容(默认情况下仍会降低 gmail 并删除点,但其他人则不会))

validation.normalizeEmail(email ,{
    all_lowercase: false
});