如何不断检查收到的邮件

本文关键字:何不断 检查 | 更新日期: 2023-09-27 18:01:00

我正忙于开发一个应用程序,该应用程序必须不断检查特定电子邮件地址上的传入邮件。一旦阅读了这封电子邮件,程序就会回复。

我一直在网上搜索,但没有找到有建设性的东西,因为我没有太多编程/处理POP3邮件等,只需要朝着正确的方向推动一下。

不断检查收到的邮件的最佳方式是什么?

如何不断检查收到的邮件

有些电子邮件服务器有推送系统。

POP使用的是一种拉动机制,所以它永远不会起作用。

您的选择:

  1. 实施牵引机制,每隔一分钟左右检查一次
  2. 使用另一种方式与您的邮件服务器集成,也许您可以在使用Exchange时使用EWS(我不确定它是否支持推送,但我想支持(

如果您必须坚持使用POP3来检索邮件,那么除了轮询之外,您没有其他选择。POP3是一种旧的邮件协议,它不提供任何机制让邮件服务器在收到新邮件时通知其客户端。

如果你可以使用另一种协议,你可以切换到IMAP4,现在大多数电子邮件服务器都支持它。IMAP协议提供了一个IDLE命令,允许客户端打开套接字,等待来自邮件服务器的通知。客户端不再需要轮询服务器来确定是否有任何新消息,它将在收到新消息后立即收到通知(以及消息删除、文件夹创建等通知(

不幸的是:

  • 中目前没有对IMAP的内置支持。Net框架。但是有许多第三方替代方案(请查看此SO线程以获取示例(
  • IMAP比POP3复杂得多。如果您想要一个快速简单的解决方案,请坚持POP3轮询

正如Patrick Hofman所提到的,Exchange Web Services(EWS(还将为您提供一种在收到新邮件时获取通知的方法。还有一个。Net管理的API由Microsoft提供,省去了直接使用EWS SOAP API的麻烦。但是,这只适用于Exchange服务器,并且必须在Exchange上启用EWS功能。

我使用DispatcherTimer每x秒执行一次,如下所示:

        _timer = new DispatcherTimer();
        _timer.Tick += (s, e) => Sync();
        _timer.Interval = new TimeSpan(0, 0, syncTime);
        _timer.Start();

其中,Sync((是与POP3服务器同步并下载消息的函数,syncTime是每次同步之间的时间(以秒为单位(。当然,如果你只想回复,你必须使用你的回复方法,而不是同步((。