Delphi - 在push方法中扩展Indy组件

0 delphi imap push indy

我需要使用IMAP4构建邮件服务器.它应该在连接时将邮件"推送"到客户端.我使用不支持IMAP IDLE的Delphi XE6和Indy 10.6.0.5122.有没有可能用"推"方法装备我的Indy组件?如果没有,那么我可以用"推"代替定期询问服务器是否存在新邮件,或者这是个坏主意?谢谢你的每一个有用的答案

Rem*_*eau 5

就像你说的,Indy目前不支持IDLE,但你应该能够通过一些额外的工作手动实现它.

在客户端,调用TIdIMAP4.IOHandler.WriteLn()发送IDLE命令并IOHandler.ReadLn读取它的回复(我不确定TIdIMAP4.SendCmd()在这种情况下是否可以工作),然后启动一个定时器/线程来读取入站数据,直到你IDLE关闭.

在服务器端,IDLETIdIMAP4Server.CommandHandlers集合中添加一个条目并为其分配OnCommand处理程序以发送回复,然后您可以在需要时将条目推送到客户端套接字,直到客户端关闭IDLE(使用DONE命令或关闭套接字).

我没有代码示例.阅读RFC 2177,了解IDLE工作原理的完整细节.