我正在忙着开发一个必须经常检查特定电子邮件地址上的传入邮件的应用程序。一旦阅读此电子邮件,该程序将回复。
我一直在寻找网络,但是没有找到具有建设性的东西,因为我没有使用POP3邮件进行编程/工作,只需要朝着正确的方向轻推。
持续检查传入邮件的最佳方法是什么?
答案 0 :(得分:1)
某些电子邮件服务器具有推送系统。
POP根据定义使用拉动机制,因此无论如何都不会起作用。
您的选择:
答案 1 :(得分:1)
如果您必须坚持使用POP3来检索邮件,那么除了轮询之外,您将没有任何其他选项。 POP3是一种旧的邮件协议,它不提供任何机制让邮件服务器在收到新邮件时通知其客户端。
如果您可以使用其他协议,则可以切换到现在大多数电子邮件服务器都支持的IMAP4。 IMAP协议提供IDLE命令,允许客户端保持其套接字打开,等待来自邮件服务器的通知。客户端不再需要轮询服务器以查明是否有新消息,只要收到新消息就会收到通知(以及消息删除,文件夹创建等通知)
不幸的是:
正如Patrick Hofman所提到的,Exchange Web Services(EWS)还会为您提供一种在收到新消息时收到通知的方法。还有一个由Microsoft提供的.Net托管API,免除了直接使用EWS SOAP API的麻烦。但是,这仅适用于Exchange服务器,并且必须在Exchange上启用EWS功能。
答案 2 :(得分:0)
我使用DispatcherTimer每隔x秒执行一次,如下所示:
_timer = new DispatcherTimer();
_timer.Tick += (s, e) => Sync();
_timer.Interval = new TimeSpan(0, 0, syncTime);
_timer.Start();
其中Sync()是与POP3服务器同步并下载消息的功能,syncTime是每次同步之间以秒为单位的时间。当然,如果你只想回复,你必须使用你的回复方法而不是Sync()。