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

ncc*_*071 6 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服务器上进行,这将允许我的应用程序仅检索自上次运行服务以来我没有读过的那些电子邮件?

Ada*_*son 4

不要使用 Gmail 的 POP 或 IMAP 实现作为规范;这两种协议在 Gmail 帐户上的表现与在几乎任何其他服务器上的表现都不同。

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

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