Планирование времени для отправки электронной почты на Java или Python в будущем
================================================================================

Я пишу приложение, и мне бы хотелось, чтобы оно каким-то образом запланировало отправку электронного письма на более поздний срок (вероятно, через час после его запуска). Язык программирования будет Python или Java.

Какие-нибудь инструменты с открытым исходным кодом, доступные для этой цели?

РЕДАКТИРОВАТЬ: я забыл упомянуть, что он будет запущен после тестового запуска, поэтому приложение уже будет недоступно, и я думаю, что решение Quartz не будет работать. Будет ли это возможно?

В идеале я хотел бы услышать, что в протоколе SMTP есть некоторые скрытые вещи, которые позволяют это, и просто потребуется добавить какой-либо флаг к сообщению, и поставщики электронной почты будут интерпретировать необходимость их отправки позже.

Ответ 1:

В Python используйте`threading.Timer` планировать в будущем; использование`smtplib` отправить электронное письмо. Внешняя библиотека не требуется.

Ответ 2:

Похоже, вы хотите, чтобы отправляющая программа вышла из режима ожидания, а не ожидала его в фоновом режиме. Вы можете использовать cron для этого. Альтернатива просто использовать команду Unix`sleep` а также`mail`:

Постскриптум Я не верю, что у SMTP есть что-то для тебя в этом случае. Вы действительно ищете MTA, который имеет функцию планирования. Хотя я не знаком с этим, чтобы дать рекомендацию.



Я не думаю, что стандартный протокол SMTP имеет такую функцию, поэтому, если вы хотите быть независимым от платформы, вам придется искать другое решение.

Как насчет записи вашего сообщения в очередь (локальная база данных, например) с отметкой времени, а затем какой-нибудь программой, которая периодически просматривает его и отправляет ожидающие электронные письма?

Является ли задержка точной временной шкалой или она «на 1-2 часа позже»? Если это последнее, то у вас может быть почасовая работа (cronjob, начинающийся каждый час, или фоновая работа, спящая в течение часа), которая затем будет отправлять электронные письма.



[кварцевый](http://www.quartz-scheduler.org/), структура планирования работы с открытым исходным кодом.



 используя JavaMail (с вложениями и всем), сохранить его на диск, а затем передать «mail [[email protected]](/cdn-cgi/l/email-protection) <textfilefromjavamail» в пакетную систему Linux.

Существует команда «at», которая, скорее всего, будет делать именно то, что вы хотите.



[кварцевый](http://www.quartz-scheduler.org/) отличная библиотека Java для функций, которые вы хотите запускать в определенное время, через определенный промежуток времени и т. д.

Существует также[класс таймера в JDK](https://download.oracle.com/javase/6/docs/api/java/util/Timer.html).



[Кварцевый планировщик](http://www.quartz-scheduler.org/) может быть пользователем для такого рода асинхронных заданий.