我知道gmail允许用户在@符号之前的电子邮件地址中插入他/她想要的句号。 Gmail还允许用户附加如下电子邮件地址:userName+anyStringHere@gmail.com。所有这些“不同”的电子邮件地址基本上都是相同的地址。 (Link to google blog describing these "features")
我想阻止用户使用基本相同的电子邮件地址创建多个帐户。我决定将电子邮件地址存储在我的数据库中,包括那些句号和后续内容,包括+唱片,但现在我想知道:忽略电子邮件提供商主要关注的@符号前面的句点是否是标准?
答案 0 :(得分:23)
这非常适合gmail,但这也适用于域名的Google应用,因此您只能为@ gmail.com执行此操作
我不会这样做,这只是疏远你的诚实用户而不是阻止任何人决定创建多个帐户。
答案 1 :(得分:17)
在过去的几天里,我遇到了同样的问题。在网上研究并检查了一些事情后,我发现:
我得出结论,大多数用户使用微软,谷歌或雅虎提供的服务。所以我可以像这样使用特定于应用程序的正则表达式。
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 点或带有点的地址,或不同的点,前提是它们先前是用人工(键盘)输入的。
现在,该应用认为地址不同,并为用户自动创建一个新帐户。然后他/她想知道:“我所有的旧东西在哪里?我以前用这个帐户创建的?我用相同的电子邮件地址登录!”
我认为对于非技术人员来说,忽略Gmail地址中的点是用户友好的方法。
要让技术人员使用同一个Gmail地址来创建多个帐户(出于测试目的),您可以选择将whatever+with-tags@gmail
考虑为另一个地址。 -每个人都开心:-)
(“垃圾邮件和垃圾邮件过滤器可以考虑到bob@gmail.com
和bob+with-a-tag@gmail.com
是同一个人。)