如何删除重复的电子邮件地址 [关闭]

Posted

技术标签:

【中文标题】如何删除重复的电子邮件地址 [关闭]【英文标题】:How to de-duplicate e-mail addresses [closed] 【发布时间】:2011-08-26 13:31:25 【问题描述】:

有没有一种方法可以可靠地从用户输入的电子邮件地址中获取唯一的电子邮件地址?问题是诸如 GMail 之类的服务允许您在地址中添加句点并且它会被删除,而对于其他服务则不是这样。

GMail:

chad.moran@gmail.com
c..hadmoran@gmail.com
c.h.a.d.m.o.r.a.n@gmail.com

这些都是一样的

其他服务:

chad.moran@---.com
c..hadmoran@---.com

这些都是独一无二的。

除了专门为 GMail 设置特殊逻辑之外,还有更好的方法吗?

【问题讨论】:

我有几个电子邮件帐户只是转发到我的 gmail 帐户。运行自己的域的人可能会收到来自该域的所有电子邮件。所以基本上不,没有任何方法可以确保给定的电子邮件地址不会与您已经拥有的电子邮件地址在同一个邮箱中。 如果您的用户故意给您两个不同的电子邮件地址,您是否应该尊重他们的意愿并发送到两个不同的地址?对我来说,这听起来像是某种确保“每个用户一个帐户”的机制,但最终也会因为许多其他原因而存在缺陷。 为什么,确切地说,你认为你需要这个?如果我给你我的电子邮件地址的一种更改形式,那正是我希望你使用的那个。 @Chad、chad.moran@gmail.com 和 c.h.a.d.m.o.r.a.n@gmail.com 唯一的电子邮件地址。根据您的 GMail 设置,它们可能会或可能不会出现在同一个“文件夹”中,但这只是巧合。然后你会有人拥有全能的电子邮件地址(abuse@chadmoran.cx、info@chadmoran.cx 等)。因此,无法通过算法确定每个用户的唯一性。并且“专门针对 GMail 的逻辑”将毫无意义,因为 GMail 可能是您最不担心的(包罗万象等)。 :) 另外,@Cody 说了什么。你在这里做错了。 我不是在问这个问题来辩论什么应该是独一无二的,什么不应该是独一无二的。我不是试图将用户数据翻译成我想要的,我是在存储和使用他们逐字提供给我的地址。 【参考方案1】:

每个电子邮件服务器对于允许和不允许的内容都有不同的规则。您指定您不希望每个客户端都有特定的逻辑,因此您必须有特定的逻辑。

您可以去掉所有点,但其他客户端可能会将带点的电子邮件地址视为不同的。

我强烈建议不要尝试这样做,因为这将是一场维护噩梦,尤其是当其中一个电子邮件服务在一夜之间更改其政策时。此外,这样一个系统的好处很小,用户只会被激励注册一个新的电子邮件地址,这比添加他们的实际电子邮件地址稍微困难一点。

【讨论】:

我认为你的意思是“邮件服务器”,你说的是“邮件客户端” 我认为是这种情况,但我想我会问,因为似乎没有类似的问题在 SO 上很流行。【参考方案2】:

这是不可能的,因为每个单独的电子邮件服务都可以选择以自己的方式解释电子邮件地址的“本地部分”(@ 之前的部分)。 chad.moran@gmail.comchadmoran@gmail.com 可能会路由到同一个邮箱,但不同的提供商可能会将它们路由到不同的邮箱。

来自wikipedia:

电子邮件地址的本地部分的解释取决于邮件服务器中实施的约定和策略。例如,区分大小写可以区分仅在本地部分字符大小写不同的邮箱,尽管这不是很常见。

【讨论】:

以上是关于如何删除重复的电子邮件地址 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java从数组中删除重复项?

php中的用户注册:如何删除未完成激活的用户[关闭]

删除重复的电子邮件

有效的电子邮件地址 [重复]

如何配置 AWS ELB 以阻止某些 IP 地址? (已知的垃圾邮件发送者)[关闭]

如何更改后缀的默认电子邮件地址? [关闭]