我有一个 Perl 脚本,它使用NET::IMAPClient
andMIME::Parser
简单地从 IMAP 服务器读取新电子邮件并将所有附件保存到磁盘。
我的问题是:一旦有新电子邮件,运行此脚本的最佳方法是什么?我可以使用 cron 定期运行脚本,我什至可以每隔几秒检查一次,但我怀疑有更好的方法。
理想情况下,我会在收到电子邮件后立即采取行动,就像系统事件一样。有哪些常用软件和技术可以实现这一点?我使用的是 Debian 系统。
答案1
一般来说,您会不断检查电子邮件,除非,如所提到的@乔尔戴维斯,可以使用一些push命令来扩展服务器。
此外,如果您的电子邮件服务器支持,则可以使用 IMAP4 的 IDLE 扩展:
IMAPClient 对 IDLE 有本机支持:
答案2
一般来说,传输数据的程序通过“轮询”或“推送”进行操作。除非可以修改 IMAP 服务器以将数据推送到带有 perl 脚本的服务器,否则您只能定期轮询事件。
一种替代方法cron
是仅守护 perl 脚本,以便它sleep
在每次检查后执行。这可以节省您的时间execve
,并且根据您轮询的频率,您甚至可以节省建立 TCP 连接所需的时间