如何在字符串中获取电子邮件地址

时间:2011-06-23 19:28:36

标签: c# string email

我从Exchange 2003服务器和这些电子邮件中提取了许多电子邮件,试图确定哪些是退回(无效),因此我可以将其从联系人中删除。

搜索电子邮件正文以查找退回电子邮件地址的最有效方法是什么?

4 个答案:

答案 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;
}