所有电子邮件提供商都会忽略@前面的时段吗?

时间:2013-02-14 00:32:47

标签: email email-integration

我知道gmail允许用户在@符号之前的电子邮件地址中插入他/她想要的句号。 Gmail还允许用户附加如下电子邮件地址:userName+anyStringHere@gmail.com。所有这些“不同”的电子邮件地址基本上都是相同的地址。 (Link to google blog describing these "features")

我想阻止用户使用基本相同的电子邮件地址创建多个帐户。我决定将电子邮件地址存储在我的数据库中,包括那些句号和后续内容,包括+唱片,但现在我想知道:忽略电子邮件提供商主要关注的@符号前面的句点是否是标准?

3 个答案:

答案 0 :(得分:23)

这非常适合gmail,但这也适用于域名的Google应用,因此您只能为@ gmail.com执行此操作

我不会这样做,这只是疏远你的诚实用户而不是阻止任何人决定创建多个帐户。

答案 1 :(得分:17)

在过去的几天里,我遇到了同样的问题。在网上研究并检查了一些事情后,我发现:

  • DOTS MATTER IN:Microsoft Outlook,Yahoo Mail,Apple iCloud ID
  • DOTS无关紧要:Gmail,Facebook ID
  • 严禁禁止使用:Twitter

来源:An article on Slate

我得出结论,大多数用户使用微软,谷歌或雅虎提供的服务。所以我可以像这样使用特定于应用程序的正则表达式。

var eml_exp = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@(gmail.com)$/i;
if(eml_exp.test("email@addrss"))
//if it's a gmail address, then remove periods from local part and also anything
// after `+` sign . Then compare the address in your existing user table,
// if you find it unique or unused then let the user to register.

您也可以阅读其他已知服务的手册并根据它们实施。

"别忘了开源你的工作:p"

<强>更新

根据这个问题Adding + text before the @ in an email,您可以阻止使用+来表明您的整个问题,我的问题将得到解决。

答案 2 :(得分:1)

  

“我要阻止用户创建多个帐户”

也许,就像这里的其他人所说的那样, 不是忽略句点的好理由。

但是,一个很好的理由可能是防止用户意外创建其他帐户。假设某个Web应用程序最近已安装,但尚未配置为可与Gmail OpenAuth一起使用。因此,人们可以手动输入地址,以使用本地电子邮件和密码帐户进行注册。

稍后,该网络应用会配置OpenAuth和一个使用Gmail登录按钮。现在拥有gmail地址的人,点击该按钮即可登录。在某些情况下,人们不小心手动输入了带有 no 点或带有点的地址,或不同的点,前提是它们先前是用人工(键盘)输入的。

现在,该应用认为地址不同,并为用户自动创建一个新帐户。然后他/她想知道:“我所有的旧东西在哪里?我以前用这个帐户创建的?我用相同的电子邮件地址登录!”

这种情况的现实生活示例:https://meta.discourse.org/t/discourse-creates-new-users-if-dots-are-present-absent-in-google-email-address-when-logging-in-using-google/66151

我认为对于非技术人员来说,忽略Gmail地址中的点是用户友好的方法。

要让技术人员使用同一个Gmail地址来创建多个帐户(出于测试目的),您可以选择将whatever+with-tags@gmail考虑为另一个地址。 -每个人都开心:-) (“垃圾邮件和垃圾邮件过滤器可以考虑到bob@gmail.combob+with-a-tag@gmail.com是同一个人。)