阅读pop3电子邮件,为什么不读取电子邮件?

时间:2011-07-28 07:02:13

标签: c# asp.net openpop

我正在使用C#从我的网络域读取电子邮件并使用OpenPop.net库。

它正在阅读电子邮件,但它只会收到新的电子邮件。我想让它像hotmail那样应该读取和读取两者然后使用CSS我会以不同的方式显示它们。请指导我如何做到这一点。

感谢

4 个答案:

答案 0 :(得分:2)

POP3不是像IMAP这样的存储系统。

当您从POP3收到邮件时,它通常会从服务器中删除该邮件(永久)。这就是它的工作原理。

也许OpenPOP中有一个选项允许在检索后不删除服务器上的电子邮件。

答案 1 :(得分:2)

编辑:

我猜你正试图用他们的POP3从gmail中检索邮件。 Gmail有一些奇怪的非标准POP3行为。 Gmail将隐藏已检索的邮件,并忽略POP3 DELE命令。 有关此行为的详细信息,请参阅this related question

其中一个Openpop示例显示了如何检索所有消息:

/// <summary>
/// Example showing:
///  - how to fetch all messages from a POP3 server
/// </summary>
/// <param name="hostname">Hostname of the server. For example: pop3.live.com</param>
/// <param name="port">Host port to connect to. Normally: 110 for plain POP3, 995 for SSL POP3</param>
/// <param name="useSsl">Whether or not to use SSL to connect to server</param>
/// <param name="username">Username of the user on the server</param>
/// <param name="password">Password of the user on the server</param>
/// <returns>All Messages on the POP3 server</returns>
public static List<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<Message> allMessages = new List<Message>(messageCount);

        // Messages are numbered in the interval: [1, messageCount]
        // Ergo: message numbers are 1-based.
        for(int i = 1; i <= messageCount; i++)
        {
            allMessages.Add(client.GetMessage(i));
        }

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

答案 2 :(得分:1)

因为POP标准行为是:

  • 下载消息
  • 删除邮件

而IMAP标准行为是:

  • 下载消息
  • 留言

如果POP库的级别足够低,您可以随时更改该行为。

答案 3 :(得分:0)

当您从smtp服务器获取电子邮件时,您可以做的就是将所有电子邮件写入数据库,因此下次打开应用程序时,您仍然可以阅读所有电子邮件。

通常邮件服务器在客户端收到邮件时删除邮件(在Outlook中,其他邮件客户端,有一个特定的设置可以打开/关闭它,也许OpenPop lib也有此设置)