【发布时间】:2018-03-24 11:42:05
【问题描述】:
我正在查看所有用于电子邮件标准化的模块,并且大多数模块似乎默认删除了电子邮件中的点。我知道 Gmail 会忽略点,但我的印象是许多其他提供商不会。
显然我不希望用户从同一个地址创建多个帐户,但我更担心很多人根本无法创建一个。
一种选择是只删除我猜某些电子邮件的点...
在这方面的任何建议将不胜感激!
【问题讨论】:
标签: email login normalization
我正在查看所有用于电子邮件标准化的模块,并且大多数模块似乎默认删除了电子邮件中的点。我知道 Gmail 会忽略点,但我的印象是许多其他提供商不会。
显然我不希望用户从同一个地址创建多个帐户,但我更担心很多人根本无法创建一个。
一种选择是只删除我猜某些电子邮件的点...
在这方面的任何建议将不胜感激!
【问题讨论】:
标签: email login normalization
我决定自己回答这个问题,因为页面创建后出现的链接实际上提供了比我手动搜索 stackoverflow 的链接更好的链接。显然我的搜索技巧还有待改进......
第一个链接上的第一个和第二个答案非常有用:
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
});
【讨论】: