2012-05-15 12 views
8

मैं किसी दिए गए इनबॉक्स में मौजूद सभी ईमेल से हमारे लिंक को आज़माने और पार्स करने के लिए OpenPop.net का उपयोग कर रहा हूं। मैं सभी संदेश प्राप्त करने के लिए इस विधि पाया:OpenPop.net वास्तविक संदेश पाठ प्राप्त करें

public static List<OpenPop.Mime.Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password) 
    { 
     // The client disconnects from the server when being disposed 
     using (Pop3Client client = new Pop3Client()) 
     { 
      // Connect to the server 
      client.Connect(hostname, port, useSsl); 

      // Authenticate ourselves towards the server 
      client.Authenticate(username, password); 

      // Get the number of messages in the inbox 
      int messageCount = client.GetMessageCount(); 

      // We want to download all messages 
      List<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.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));      
      } 

      client.Disconnect(); 

      // Now return the fetched messages 
      return allMessages; 
     } 
    } 

अब मैं प्रत्येक संदेश के माध्यम से लूप करने के लिए कोशिश कर रहा हूँ, लेकिन मैं इसे कैसे करना है, मैं अपने बटन के लिए अब तक इस राशि यह पता लगाने की प्रतीत नहीं कर सकते हैं:

private void button7_Click(object sender, EventArgs e) 
    { 

     List<OpenPop.Mime.Message> allaEmail = FetchAllMessages("pop3.live.com", 995, true, "[email protected]", "xxxxx"); 

     var message = string.Join(",", allaEmail); 
     MessageBox.Show(message); 
    } 

मैं allaEmail में प्रत्येक प्रविष्टि के माध्यम से कैसे लूप करूंगा ताकि मैं इसे संदेशबॉक्स में प्रदर्शित कर सकूं?

उत्तर

25

मैं देख सकता हूं कि आप OpenPop मुखपृष्ठ से fetchAllEmail example का उपयोग कर सकते हैं। एक समान उदाहरण showing how to get body text मुखपृष्ठ पर भी है।

आप यह भी देखना चाहते हैं कि ईमेल वास्तव में कैसे संरचित किए जाते हैं। इस उद्देश्य के लिए email introduction मौजूद है।

ऐसा कहकर, मैं नीचे दिए गए कोड के समान कुछ करता।

private void button7_Click(object sender, EventArgs e) 
{ 
    List<OpenPop.Mime.Message> allaEmail = FetchAllMessages(...); 

    StringBuilder builder = new StringBuilder(); 
    foreach(OpenPop.Mime.Message message in allaEmail) 
    { 
     OpenPop.Mime.MessagePart plainText = message.FindFirstPlainTextVersion(); 
     if(plainText != null) 
     { 
      // We found some plaintext! 
      builder.Append(plainText.GetBodyAsText()); 
     } else 
     { 
      // Might include a part holding html instead 
      OpenPop.Mime.MessagePart html = message.FindFirstHtmlVersion(); 
      if(html != null) 
      { 
       // We found some html! 
       builder.Append(html.GetBodyAsText()); 
      } 
     } 
    } 
    MessageBox.Show(builder.ToString()); 
} 

मुझे उम्मीद है कि यह आपको रास्ते में मदद कर सकता है। ध्यान दें कि OpenPop के लिए online documentation भी है।

+1

वाह आपको धन्यवाद! यही वह था जो मैं बाद में था! :) चेकबॉक्स – user1213488

+0

html.GetBodyAsText() एक अपवाद देता है कहता है कि ऑब्जेक्टरेफर एक उदाहरण पर सेट नहीं है। लेकिन मुझे FindFirstPlainTextVersion() और फिर plainText.GetBodyAsText() का उपयोग करके कोई मूल्य क्यों मिलता है? – Antony

0

इस तरह मैंने किया:

string Body = msgList[0].MessagePart.MessageParts[0].GetBodyAsText(); 
      foreach(string d in Body.Split('\n')){ 
       Console.WriteLine(d);      
      } 

आशा है कि यह मदद करता है।