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

时间:2010-09-20 17:47:42

标签: java python email scheduling

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

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

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

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

6 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

还有the Timer class in the JDK

答案 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命令sleepmail

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

P.S。在这种情况下,我不相信SMTP会为您提供任何帮助。您真的在寻找具有日程安排功能的MTA。虽然我不熟悉它来提出建议。