我有一个这样的电子邮件文本文件:
10:[email protected];[email protected]
12:[email protected]; "George <[email protected]>"
43:[email protected].;[email protected]
...
我想检查列表是否包含格式良好的条目。你知道要检查的任何工具或网络服务,并给我一个无效地址列表吗?
更新亲爱的,谢谢您的意见。我真的在寻找基本的语法检查,所以我将继续使用Rafe's idea(我会用Java做)。
我写了一个简单的Perl脚本,它使用Email :: Address模块来验证这些地址:
#!/usr/bin/env perl
use Email::Address;
while (<>) {
chomp;
@addresses = split /\;/;
foreach my $address (@addresses) {
if (!Email::Address->parse($address)) {
print $address, "\n";
}
}
}
您只需安装模块即可。它的主页是:
阅读本文,以便您按照RFC兼容的方式进行:
验证电子邮件的最简单方法可能是向其发送消息。正如Sean所指出的,这可以让你对DoS攻击开放,但是根据你的描述,你似乎有一个文本文件而不是一个网页,所以这应该不是问题。
正则表达式不是匹配电子邮件的好工具,有很多有效的地址,天真匹配将失败。查看attempts to validate emails with regex的比较了解详情。
如果你必须离线检查它们,我会将电子邮件分成几部分(即@之前和@之后的部分),然后你可以创建一个自定义验证器(或正则表达式)来验证这些部分。
首先,我会读这篇文章I Knew How To Validate An Email Address Until I Read The RFC。
在以前的日子里,您可以连接到用户的邮件服务器并使用VRFY命令并验证电子邮件地址是否有效,但垃圾邮件发送者滥用了该权限,我们都失败了。
现在,我建议采用三部分方法: