2017-11-28 14 views
0

以下の方法を使用して、電子メール本文から有効なすべての電子メールアドレスのみを取得します。電子メール本文の解析中に署名イメージを削除する方法はありますか?

public static IEnumerable<string> ParseAllEmailAddressess(string data) 
    { 
     HashSet<String> emailAddressess = new HashSet<string>(); 
     Regex emailRegex = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.IgnoreCase); 
     MatchCollection emailMatches = emailRegex.Matches(data); 
     foreach (Match emailMatch in emailMatches) 
     { 
      emailAddressess.Add(emailMatch.Value); 
     } 
     return emailAddressess; 
    } 

ここでの問題は、Outlookが([email protected])のようないくつかのランダムな電子メールアドレスを何かに署名画像を変換しています。そして私の方法は、それを有効な電子メールアドレスとみなし、それをキャプチャします。私は電子メールの本文を解析中にそのような電子メールアドレスを取り除きたい。

私はメールアドレスを分割すると思います。 @ siteの前に画像の拡張子 ".png"と一致する最初のインデックスを使用して、有効な電子メールを識別します。しかし、私はあまり効率的ではないと思う。署名画像のコンテンツを削除するためにいくつかのreg exを適用するのは速いでしょう。

助けていただければ幸いです。

答えて

0

メール本文から署名画像のメールアドレスを削除する方法を以下に作成します。

public static readonly string[] _validExtensions = { "jpg", "bmp", "gif", "png", "jpeg","tiff","raw","psd" }; 

    public static bool IsImageExtension(string email) 
    { 
     bool isContainsImageExt = false;   

      MailAddress addr = new MailAddress(email); 
      string username = addr.User; 
      if (!string.IsNullOrEmpty(username) && username.Contains('.')) 
      { 
       String[] parts = username.Split(new[] { '.' }); 
       if(!string.IsNullOrEmpty(parts[0]) && !string.IsNullOrEmpty(parts[1])) 
       { 
        if(_validExtensions.Contains(parts[1].ToLower()) && (parts[0].ToLower().Contains("image"))) 
        { 
         isContainsImageExt = true; 
        } 
       } 
      } 

     return isContainsImageExt; 
    } 
関連する問題