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

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

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

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

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

 Samuel Carrijo20 сент. 2010 г., 19:52
Предпочтительно не специфично для платформы. Я бегу linux
 S.Lott20 сент. 2010 г., 19:51
Какая платформа? Linux какat, В Windows есть что-то похожее.
 Jaydeep Patel21 сент. 2010 г., 08:28
Quartz scheduler - это проект с открытым исходным кодом на основе Java. Так что без JVM это кварцевое решение невозможно.

Ответы на вопрос(6)

Ответ 1:

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

Ответ 2:

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

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

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

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

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

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

кварцевый, структура планирования работы с открытым исходным кодом.

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

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

кварцевый отличная библиотека Java для функций, которые вы хотите запускать в определенное время, через определенный промежуток времени и т. д.

Существует такжекласс таймера в JDK.

Кварцевый планировщик может быть пользователем для такого рода асинхронных заданий.

 Chris20 сент. 2010 г., 19:52
+1, потому что 26,4 тыс. Репутации Мэтта Б могут жить без +1. :-)
 bzlm20 сент. 2010 г., 20:13
@Chris Если вы стремитесь к такой репутации, оставляйте свои комментарии по теме. :)
 Thorbjørn Ravn Andersen21 сент. 2010 г., 03:53
Вопрос был отредактирован, чтобы сказать, что JVM может не работать во время отправки писем.

Ваш ответ на вопрос