Вам нужно:
msg = f.read()
вместо:
msg = f.readlines()
Это потому, что sendmail()
хочет строку , как следует из сообщения, но что [ 113] возвращается список строк .
Когда вы сделаете print(msg)
, вы увидите ['first line', 'second line', ...]
. Вместо этого вы должны увидеть все сообщение без скобок или кавычек.
read()
правильно прочитает весь файл и вернет его содержимое в виде одной строки.
Вашим Кварцевым Заданием не должен быть Сервлет! Можно сохранить входящие Задания в DB и запускать Кварц, когда основной Сервлет запускает. Кварцевое Задание может быть простым POJO и проверить DB на любые задания периодически.
Однако я предложил бы смотреть на Spring. Не трудно учиться и легкий установить в Tomcat. Можно найти большую хорошую информацию в справочной документации Spring. Это имеет Кварцевую интеграцию, которая намного легче, чем выполнение его вручную.
Подходящее решение, которое не потребует, чтобы Вы сделали большой дизайн и программирование, состоит в том, чтобы создать объект, в котором Вы будете нуждаться позже в сервлете и сериализируете его к массиву байтов. Затем помещенный это в поле BLOB в базе данных и быть сделанным с ним.
Затем Ваш поток обработки может просто считать содержание, десериализовать его и работать с возрожденным объектом.
Но, можно получить лучшие ответы путем описания того, что Вам нужна Ваша система, чтобы на самом деле СДЕЛАТЬ :)