我从Exchange 2003服务器和这些电子邮件中提取了许多电子邮件,试图确定哪些是退回(无效),因此我可以将其从联系人中删除。
搜索电子邮件正文以查找退回电子邮件地址的最有效方法是什么?
答案 0 :(得分:2)
您可能需要查看this page,其中有多种正则表达式可用于匹配电子邮件地址,并说明了选择每种地址的权衡。在选择一个之前,你一定要阅读它。
答案 1 :(得分:1)
只需使用正则表达式。
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
答案 2 :(得分:0)
这是我们在很多电子邮件验证应用程序中使用的正则表达式;
public static bool CheckEmail(string email)
{
//validate Email
Regex regex = new Regex(@"^([a-zA-Z0-9_\-\.\']+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$", RegexOptions.IgnoreCase);
Match match = regex.Match(email);
return match.Success;
}
正确识别退回电子邮件的实际过程,而不是自动回复或正版消息有点复杂,但这至少会为您提供电子邮件地址。
答案 3 :(得分:0)
我把这里的一些答案拉成了这样的东西。它实际上从字符串返回每个电子邮件地址(有时从邮件主机和目标地址有多个)。然后,我可以将每个电子邮件地址与我们发送的出站地址进行匹配,以进行验证。我使用@plinth中的文章来更好地理解正则表达式并修改@Chris Bint中的代码
但是,我仍然想知道这是否是监控10,000多封电子邮件的最快方式?有没有更有效的方法(仍然使用c#)?实时代码不会每次在循环中重新创建Regex对象。
public static MatchCollection CheckEmail(string email)
{
Regex regex = new Regex(@"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", RegexOptions.IgnoreCase);
MatchCollection matches = regex.Matches(email);
return matches;
}