从接收邮件服务器(POP)读取电子邮件

时间:2010-06-08 04:23:05

标签: c# email pop3

我使用CodeProject的开源代码来读取来自邮件服务器(POP Server)的电子邮件。代码可以在以下位置找到:http://www.codeproject.com/KB/IP/Pop3MimeClient.aspx

到目前为止一切正常;我可以看电子邮件。

我使用此代码的目的是从POP服务器检索电子邮件并处理它们。

我的问题是: 如果我使用Gmail的pop服务器“pop.gmail.com”并运行appplication,我只会获得自上次运行应用程序以来我未检索过的那些电子邮件。但是,如果每次运行应用程序时都使用客户端的POP服务器,我会在pop服务器上收到所有电子邮件。

例如:
如果我使用Gmail POP服务器:pop.gmail.com
我在pop服务器上有三封电子邮件。 我没有运行该应用程序。我是第一次运行该应用程序。 申请阅读电子邮件;这次我将收到所有三封电子邮件。 我第二次运行应用程序;我的申请这次不会阅读任何电子邮件,因为我已经阅读了3个现有的电子邮件。 这很好;这就是我想要的。

现在我发送一封电子邮件到pop.gmail.com。 我第三次再次运行该应用程序;这次我只会收到刚刚到达的电子邮件,这是第四个。这是好行为;这就是我想要的。

但如果我使用客户端的POP服务器:
无论我运行多少次应用程序,它都会读取邮箱中的所有电子邮件。

这会给我带来麻烦,因为我正在考虑构建一个窗口服务,它将从pop服务器读取电子邮件并处理它们。该服务将持续运行。我将在POP服务器中处理电子邮件然后睡觉,比如让我们说1分钟,然后再次处理电子邮件。如果从CodeProject下载的应用程序一直读取所有电子邮件,我的客户邮箱可以在这个邮箱中有数千个电子邮件,所以这对我来说是不可行的。

我的客户端的POP服务器是否有一些设置允许我的应用程序只检索自上次运行服务以来我没有读过的那些电子邮件?

1 个答案:

答案 0 :(得分:3)

不要将Gmail的POP或IMAP实施用作规范;对于Gmail帐户,这两种协议的行为与几乎任何其他服务器的行为不同。

要回答您的问题,您可以采取两种方法:

  1. 跟踪您看到的消息的消息ID,并在后续连接中忽略它们(这会将消息留在服务器上供另一个客户端下载)。
  2. 下载邮件后发出DELE命令,该命令会将其从服务器中删除。
相关问题