如何使用c#在电子邮件中选择所需的文本

时间:2013-09-11 14:27:11

标签: c# asp.net

我想使用c#从电子邮件中挑选所需的文字?你能帮我解决一下吗?

我需要以下示例电子邮件格式:

city,
xxxx@hotmail.com
privileged customer.

以下是示例:

我收到了来自xxxx@gmail.com的电子邮件

内容如下:

Hi xxxx,


here is the some of the lists,

Title:CITY
Email:xxxx@hotmail.com
Package:<b>Privileged customer</b>

谢谢,

此致 XXXXX。

3 个答案:

答案 0 :(得分:2)

这是示例代码。将解析出电子邮件内容。

using System.Text.RegularExpressions

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string content = "Hi:Mr. Title:Sample Email:default123_11@gmail.com";

      // Here we call Regex.Match.
      Match match = Regex.Match(content, @"Email:([a-zA-Z0-9@._]*)",
            RegexOptions.IgnoreCase);

      // Here we check the Match instance.
      if (match.Success)
      {
        // Finally, we get the Group value and display it.
        string key = match.Groups[1].Value;
        Console.WriteLine(key);
      }
      Console.ReadKey();
    }
  }
}

答案 1 :(得分:1)

您可以在一定程度上使用正则表达式。此表达式.*:(.*)将返回所有键值对。但是,您需要在事后接受匹配并删除<b></b>标记之类的内容。

var matches = Regex.Match(input, ".*:(.*)");

以下是Regex 101来证明这一点。

答案 2 :(得分:0)

                      static void Main(string[] args)
    {

        var client = new Pop3Client();
        client.Connect("pop.gmail.com", 995, true);
        client.Authenticate("xxxxx@gmail.com", "yourpassword");

        var count = client.GetMessageCount();
        Message message = client.GetMessage(count);
        int messageCount = client.GetMessageCount();

        // We want to download all messages
        List<Message> allMessages = new List<Message>(messageCount);

        // Messages are numbered in the interval: [1, messageCount]
        // Ergo: message numbers are 1-based.
        // Most servers give the latest message the highest number
        for (int i = messageCount; i > 0; i--)
        {
            allMessages.Add(client.GetMessage(i));
        }
        foreach (Message item in allMessages)
        {
            MessagePart mpart = item.FindFirstPlainTextVersion();
            string s = Encoding.UTF8.GetString(mpart.Body, 0, mpart.Body.Length);

            if (s.Contains("Name") && s.Contains("Email") && s.Contains("<b>"))
            {
                List<string> newstrlist=new List<string>();
                string[] strarry = new string[1000];
                strarry=  s.Split('\n');
               foreach (string strar  in strarry)
               {
                   if (strar.Contains("@"))
                   {
                       newstrlist.Add(strar.Remove(0, 6).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t', '\b',' '));//email ,name,subscription
                   }
                   if (strar.Contains("Name"))
                   {
                       newstrlist.Add(strar.Remove(0, 5).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t',' ', '\b'));
                   }
                   if (strar.Contains("<b>"))
                   {
                       newstrlist.Add(strar.Trim().Remove(0, 4).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t', '\b', ' '));
                   }
                 //  Console.WriteLine(strar);

               }
               foreach (string str in newstrlist)
               {
                   Console.WriteLine(str);
               }
            }

        }
        Console.ReadKey();
    }