[英]How to constantly check for incoming mail?
我正忙于开发一个应用程序,该应用程序必须不断检查特定电子邮件地址上的传入邮件。 一旦阅读此电子邮件,该程序将回复。
我一直在网上搜索,但没有发现一些有建设性的东西,因为我没有使用POP3邮件编程/工作太多,只需要朝着正确的方向轻推。
什么是不断检查传入邮件的最佳方式?
某些电子邮件服务器具有推送系统。
POP根据定义使用拉动机制,因此不会有任何作用。
你的选择:
如果您必须坚持使用POP3来检索邮件,那么除了轮询之外,您将没有任何其他选项。 POP3是一种旧邮件协议,它不提供任何机制让邮件服务器在收到新邮件时通知其客户端。
如果您可以使用其他协议,则可以切换到IMAP4,现在大多数电子邮件服务器都支持IMAP4。 IMAP协议提供IDLE命令,允许客户端保持其套接字打开,等待来自邮件服务器的通知。 客户端不再需要轮询服务器以查明是否有任何新消息,一旦收到新消息,它就会收到通知(以及消息删除,文件夹创建等通知)
不幸的是
正如Patrick Hofman所提到的, Exchange Web Services (EWS)还将为您提供一种在收到新邮件时收到通知的方法。 还有一个由Microsoft提供的.Net托管API,免除了直接使用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是每次同步之间以秒为单位的时间。 当然,如果您只想回复,则必须使用Your Reply方法而不是Sync()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.