我正在编写一个应用程序,我希望以某种方式安排在以后发送电子邮件(可能在运行一小时后)。编程语言将是Python或Java。
任何可用于此目的的开源工具?
编辑:我忘了提到它是在测试运行后运行的,所以应用程序已经关闭了,我相信Quartz解决方案不起作用。这有可能吗?理想情况下,我希望听到SMTP协议有一些隐藏的内容允许这样做,并且只需要在邮件中添加一些标记,电子邮件提供商会解释为必须稍后发送它们。
答案 0 :(得分:7)
Quartz Scheduler可以是这种异步作业的用户。
答案 1 :(得分:3)
Quartz是一个很棒的Java库,适用于您希望在特定时间间隔之后的某个时间运行的函数等。
答案 2 :(得分:2)
如果您要使用Java,请尝试Quartz,一个开源作业调度框架。
答案 3 :(得分:2)
您可以使用JavaMail(带附件和所有内容)构建要发送的实际电子邮件,将其保存到磁盘,然后将“mail foo@bar.com< textfilefromjavamail”委派给Linux批处理系统。
有一个“at”命令很可能完全符合你的要求。
答案 4 :(得分:1)
我认为标准SMTP协议不具备此类功能,因此如果您希望与平台无关,则必须搜索其他解决方案。
如何使用时间戳将消息写入队列(例如本地数据库),然后让某个程序定期观看并发送待处理的电子邮件?
延迟是精确时间还是“1-2小时后”?如果是后者,那么你可以有一个小时工作(每小时开始一次cronjob或者睡一小时的后台工作),然后发送电子邮件。
答案 5 :(得分:1)
答案1:
在Python中,使用threading.Timer
来安排;使用smtplib
发送电子邮件。无需外部库。
答案2:
听起来你希望发送程序退出而不是让它在后台等待。您可以使用cron。替代方法只需使用unix命令sleep
和mail
:
$ { sleep 3600; echo "hello world" | mail -s the-subject destination-email; } &
P.S。在这种情况下,我不相信SMTP会为您提供任何帮助。您真的在寻找具有日程安排功能的MTA。虽然我不熟悉它来提出建议。