如何在解析电子邮件正文时剥离签名图像?

How to strip signature image while parsing the email body?

我只是使用以下方法从电子邮件正文中捕获所有有效的电子邮件地址。

 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 将签名图像转换为一些随机电子邮件地址,例如 (image001.png@01D36870.C9EE4D60)。我的方法将其视为有效的电子邮件地址并捕获它。我想在解析电子邮件正文时去掉这样的电子邮件地址。

我可以考虑将电子邮件地址拆分为 .在@site 之前并使用第一个索引匹配图像扩展名“.png”来识别有效电子邮件。但我认为它不是很有效。应用一些 reg ex 来剥离签名图像内容会很快。

如有任何帮助,我们将不胜感激。

我最终创建了以下方法来从电子邮件正文中删除签名图像电子邮件地址。

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