OpenPop.net get actual message text

asp.net, c#, email, openpop

Solution

I can see that you use the fetchAllEmail example from the OpenPop homepage. A similar example showing how to get body text is also on the homepage.

You might also want to look at how emails are actually structured. A email introduction exists for just this purpose.

Having that said, I would do something similar to the code below.

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

I hope this can help you on the way. Notice that there is also online documentation for OpenPop.

Problem

I am using OpenPop.net to try and parse our links from all the emails that are in a given inbox. I found this method to get all the message: ``` 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; } } ``` Now I am trying to loop through each message but I cannot seem to figure out how to do it, I have this so far for my button: ``` private void button7_Click(object sender, EventArgs e) { List<OpenPop.Mime.Message> allaEmail = FetchAllMessages("pop3.live.com", 995, true, "xxxxx@hotmail.com", "xxxxx"); var message = string.Join(",", allaEmail); MessageBox.Show(message); } ``` How would i loop through each entry in allaEmail so that i can display it in a MessageBox?

Original source