私は、Exchange 2003サーバーおよびそれらの電子メールから多くの電子メールを取得して、返信先を判別しようとしています(無効)ので、連絡先から削除できます。どのように文字列内の電子メールアドレスを取得しますか
バウンスバックのメールアドレスを見つけるためにメール本文を検索する最も効率的な方法は何でしょうか?
私は、Exchange 2003サーバーおよびそれらの電子メールから多くの電子メールを取得して、返信先を判別しようとしています(無効)ので、連絡先から削除できます。どのように文字列内の電子メールアドレスを取得しますか
バウンスバックのメールアドレスを見つけるためにメール本文を検索する最も効率的な方法は何でしょうか?
私はここでいくつかの答えをこのようなものにしました。それは実際に文字列から各電子メールアドレスを返します(メールホストとターゲットアドレスからの倍数があることもあります)。その後私たちが送信した送信アドレスに対して、それぞれの電子メールアドレスを照合して確認することができます。 @plithからの記事を使って正規表現をよりよく理解し、@Chris Bintのコードを修正しました
しかし、これはが最速の 10,000 +メールを監視する方法であると私はまだ疑問に思っていますか?より効率的な方法はありますか(まだC#を使用しています)?ライブコードは、ループ内で毎回Regexオブジェクトを再作成しません。
public static MatchCollection CheckEmail(string email)
{
Regex regex = new Regex(@"\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b", RegexOptions.IgnoreCase);
MatchCollection matches = regex.Matches(email);
return matches;
}
正規表現を使用してください。
\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b
コメント無し投票?さあ、みんな... – therealmitchconnors
これは電子メールの検証に多くのアプリケーションで使用する正規表現です。
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;
}
正確ではなく、自動返信または本物のメッセージよりも、バウンスメールを識別するための実際のプロセスは、もう少し複雑ですが、これは、少なくともあなたのメールアドレスを提供します。
私は行くと、ルールを開発して、 "管理されていない"電子メールを評価し、より多くのルールを作成します。本当の返信は私が送った人に戻って一致させることのできる 'from'のメールを持っています。しかし、正規表現は非常に役に立ちます。私は非常に長い間、正規表現に触れる必要はありませんでした。 – Paul
私は、「本当の」返信には送信元アドレスの電子メールがあることを前提にしていますが、これはそうではありません。実際には、各電子メールをスキャンし、それぞれにカテゴリを割り当て、ストアドプロシージャを実行してDBに直接挿入する商用プログラムを使用します。素敵で簡単で、自分のルールを書かなくても大変です。 – ChrisBint
効率的な意味でですか?スピードの面では?正確さ? –
精度以上のスピード。すべての顧客は米国(限定アルファベット)です。私はここで見てきましたhttp://stackoverflow.com/questions/1028553/how-to-get-email-address-from-a-long-string、それはPHPの答えです、と私は分裂については分かりません空白のC#文字列(おそらく遅い)。正規表現は行く方法ですか? – Paul
おそらく正規表現です。いくつかのテキスト例がありますか? –