我需要使用IMAP4构建邮件服务器.它应该在连接时将邮件"推送"到客户端.我使用不支持IMAP IDLE的Delphi XE6和Indy 10.6.0.5122.有没有可能用"推"方法装备我的Indy组件?如果没有,那么我可以用"推"代替定期询问服务器是否存在新邮件,或者这是个坏主意?谢谢你的每一个有用的答案
就像你说的,Indy目前不支持IDLE,但你应该能够通过一些额外的工作手动实现它.
在客户端,调用TIdIMAP4.IOHandler.WriteLn()发送IDLE命令并IOHandler.ReadLn读取它的回复(我不确定TIdIMAP4.SendCmd()在这种情况下是否可以工作),然后启动一个定时器/线程来读取入站数据,直到你IDLE关闭.
在服务器端,IDLE在TIdIMAP4Server.CommandHandlers集合中添加一个条目并为其分配OnCommand处理程序以发送回复,然后您可以在需要时将条目推送到客户端套接字,直到客户端关闭IDLE(使用DONE命令或关闭套接字).
我没有代码示例.阅读RFC 2177,了解IDLE工作原理的完整细节.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |