如何测试两个电子邮件地址的相等性

rob*_*lco 5 java email

有没有一种全面的方法来测试两个电子邮件地址是否相等?我知道我可以普遍降低两者。但是还有一些其他规则因服务器而异。例如,“william.burroughs@gmail.com”、“will.iam.burroughs@gmail.com”和“williamburroughs@gmail.com”都等同于gmail。但我不认为这在所有情况下都是正确的。因此,给定两个电子邮件地址,我需要确保它们是等效的。目前我的代码不认为“william.burroughs@gmail.com”和“williamburroughs@gmail.com”是相同的。我可以开始特殊的外壳,比如“gmail”,所以它们是,但我希望有更好的方法。

Dav*_* S. 1

Gmail 实际上只有两条定制规则

  1. 任何句点 ( .) 都会被忽略。使用 Gmail 地址的正则表达式可以轻松克服这个问题。
  2. a 之后的任何内容都+将被忽略。再次。正则表达式将为 Gmail 地址修复此问题。

我认为最大的挑战是 Google 托管着数千个不以googlemail.com或结尾的基于云的域gmail.com。识别这些的唯一方法是进行 DNS 查找并查看域指向的 MX 记录。这是一个可以运行的 python 示例:

http://eran.sandler.co.il/2011/07/17/define-if-an-email-address-is-gmail-or-hosted-gmail-google-apps-for-your-domain/

您可以用任何其他语言执行相同的操作。查看 gmail 或 googlemail 的“MX”记录。

对于任何非 Google 域,您可以进行小写字符串比较。