安排将来用Java或Python发送电子邮件的时间

我正在编写一个应用程序,我希望以某种方式安排一封电子邮件在以后发送(可能在运行一小时后)。 编程语言将是Python或Java。

任何可用于此目的的开源工具?

编辑:我忘了提到它是在测试运行后运行,所以应用程序已经关闭,我相信Quartz解决方案不起作用。 这可能吗?

理想情况下,我想听听SMTP协议有一些隐藏的东西允许这样做,并且只需要在消息中添加一些标记,电子邮件提供商会解释为​​必须稍后发送它们。

Quartz Scheduler可以是这种异步作业的用户。

Quartz是一个很棒的Java库,用于在特定时间间隔后等特定时间运行的函数等。

JDK中还有Timer类 。

如果您要使用Java,请尝试Quartz ,一个开源作业调度框架。

您可以使用JavaMail(带附件和所有内容)构建要发送的实际电子邮件,将其保存到磁盘,然后将“mail foo@bar.com

有一个“at”命令很可能完全符合你的要求。

我不认为标准SMTP协议具有这样的function,因此如果您想要与平台无关,则必须搜索其他解决方案。

如何使用时间戳将消息写入队列(例如本地数据库),然后让某个程序定期观察它并发送待处理的电子邮件?

延迟是精确时间还是“1-2小时后”? 如果是后者,那么你可以有一个小时工作(每小时开始一次cronjob或者睡一小时的后台工作),然后发送电子邮件。

答案1:

在Python中,使用threading.Timer来安排将来; 使用smtplib发送电子邮件。 无需外部库。

答案2:

听起来你希望发送程序退出而不是让它在后台等待。 您可以使用cron。 替代方法只需使用unix命令sleepmail

 $ { sleep 3600; echo "hello world" | mail -s the-subject destination-email; } & 

PS我不认为SMTP在这种情况下对你有任何帮助。 您真的在寻找具有日程安排function的MTA。 虽然我不熟悉它来提出建议。