首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenPop.net获取实际消息文本

OpenPop.net获取实际消息文本
EN

Stack Overflow用户
提问于 2012-05-15 21:35:41
回答 3查看 25.1K关注 0票数 12

我正在使用OpenPop.net来尝试从给定收件箱中的所有电子邮件中解析我们的链接。我找到了这个方法来获取所有的消息:

代码语言:javascript
复制
    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;
        }
    }

现在我试着遍历每条消息,但我似乎不知道该怎么做,到目前为止我的按钮是这样的:

代码语言:javascript
复制
    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中的每个条目,以便在MessageBox中显示它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-15 21:58:42

我可以从OpenPop主页上看到您使用的fetchAllEmail example。主页上也有一个类似的示例showing how to get body text

你可能还想看看电子邮件实际上是如何构造的。email introduction的存在就是为了这个目的。

话虽如此,我会做一些类似于下面的代码。

代码语言:javascript
复制
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

票数 34
EN

Stack Overflow用户

发布于 2013-05-20 15:34:50

我是这样做的:

代码语言:javascript
复制
string Body = msgList[0].MessagePart.MessageParts[0].GetBodyAsText();
            foreach( string d in Body.Split('\n')){
                Console.WriteLine(d);                    
            }

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2019-02-11 20:38:55

这个问题中的其他答案是不完整的和icorrect的,主要是因为他们从来没有使用FindAllTextVersions方法,这是至关重要的。

下面是获取实际正文内容的完整方法:

代码语言:javascript
复制
private static string GetMessageBodyAsText(Message message)
{
    try
    {
        List<MessagePart> list = message.FindAllTextVersions();

        // First let's try getting the plain text part:
        foreach (MessagePart part in list)
        {
            if (part != null)
            {
                return part.GetBodyAsText();
            }
        }

        // Now let's try getting the HTML part
        MessagePart html = message.FindFirstHtmlVersion();
        if (html != null)
        {
            return html.GetBodyAsText();
        }
        return null;
    }
    catch (Exception exc)
    {
        // Handle your exception here
        return null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10601913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档