从传入邮件服务器(POP)读取电子邮件

7
我使用了来自CodeProject的开源代码来读取传入邮件服务器(POP服务器)中的电子邮件。该代码可以在以下位置找到:http://www.codeproject.com/KB/IP/Pop3MimeClient.aspx
到目前为止,它运行良好; 我可以读取邮件。
我使用此代码的目的是从POP服务器检索电子邮件并处理它们。
我的问题是: 如果我使用Gmail的POP服务器“pop.gmail.com”并运行应用程序,则仅获取自上次运行应用程序以来未检索的那些电子邮件。但是,如果我每次运行应用程序时都使用客户端的POP服务器,则会获取邮箱中的所有电子邮件。
例如: 如果我使用Gmail POP服务器:pop.gmail.com 邮箱中有三封邮件。 我还没有运行应用程序。这是我第一次运行应用程序。 应用程序读取电子邮件; 这次我将获得所有三封电子邮件。 我再次运行应用程序; 这次我的应用程序将不会读取任何电子邮件,因为我已经读取了现有的三个。这很好,这就是我想要的。
现在我发送一封电子邮件到pop.gmail.com。 我再次运行应用程序以进行第三次尝试; 这次我只会收到刚刚到达的电子邮件,即第四封电子邮件。这是好的行为; 这就是我想要的。
但是如果我使用客户端的POP服务器: 无论我运行应用程序多少次,它都会读取邮箱中的所有电子邮件。
这将为我创建问题,因为我正在考虑构建一个窗口服务,该服务将从pop服务器读取邮件并处理它们。此服务将持续运行。我将在POP服务器中处理电子邮件,然后睡眠一分钟,再次处理电子邮件。如果从CodeProject下载的应用程序始终读取所有电子邮件,则我的客户邮箱可能会有数千封电子邮件,因此对我来说不可行。
是否需要在客户端的POP服务器上进行某些设置,以允许我的应用程序仅检索自上次运行服务以来未读取的那些电子邮件?
1个回答

4

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

回答你的问题,你有两种方法可以采取:

  1. 跟踪你已经查看的邮件的消息ID,并在随后的连接中忽略它们(这将使邮件留在服务器上供其他客户端下载)。
  2. 在下载一封邮件后发出DELE命令,这将把它从服务器上删除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接