Как вы получаете адрес электронной почты в строке - PullRequest
4 голосов
/ 23 июня 2011

Я получаю много писем с сервера Exchange 2003 и из этих писем, пытаясь определить, какие из них являются недействительными (недействительными), чтобы я мог удалить их из наших контактов.

Каким будет самый эффективный метод поиска тел электронной почты, чтобы найти адреса электронной почты в отказов?

Ответы [ 4 ]

2 голосов
/ 23 июня 2011

Возможно, вы захотите взглянуть на эту страницу , которая имеет несколько вариантов регулярных выражений для сопоставления адресов электронной почты и объясняет компромиссы при выборе каждого из них. Вы обязательно должны прочитать его, прежде чем выбрать один здесь.

1 голос
/ 23 июня 2011

Просто используйте регулярное выражение.

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
0 голосов
/ 24 июня 2011

Я вытащил несколько ответов здесь примерно так.Фактически он возвращает каждый адрес электронной почты из строки (иногда есть кратные от почтового хоста и целевого адреса).Затем я могу сопоставить каждый из адресов электронной почты с исходящими адресами, которые мы отправили, чтобы проверить.Я использовал статью из @plinth, чтобы лучше понять регулярное выражение, и изменил код из @Chris Bint

Однако мне все еще интересно, является ли это самый быстрый способконтролировать более 10000 писем?Есть ли более эффективные методы (при этом все еще используя 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;
}
0 голосов
/ 23 июня 2011

Это регулярное выражение, которое мы используем во многих наших приложениях для проверки электронной почты;

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

Фактический процесс правильной идентификации отклоненного сообщения электронной почты, а не автоответа или подлинного сообщения, немного сложнее, но это по крайней мере даст вам адрес электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...