12

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, "xxxxx@hotmail.com", "xxxxx");

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

メッセージボックスに表示できるように、allaEmail の各エントリをループするにはどうすればよいですか?

4

3 に答える 3

34

OpenPop ホームページのfetchAllEmail の例を使用していることがわかります。本文テキストを取得する方法を示す同様の例もホームページにあります。

メールが実際にどのように構成されているかを確認することもできます。この目的のために、電子メールの紹介が存在します。

そうは言っても、私は以下のコードに似たようなことをします。

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 のオンライン ドキュメントもあります。

于 2012-05-15T13:58:41.987 に答える
0

これが私がやった方法です:

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

それが役に立てば幸い。

于 2013-05-20T07:34:49.597 に答える