Я обновляю некоторые пакетные программы для вывода html, а не текста. Пакетные программы запускаются с помощью команды at, которая, в свою очередь, отправляет весь вывод пользователю с помощью команды sendmail.
Поскольку команда at составляет заголовки для электронной почты, я застрял в том, как указать команде at или sendmail, что выходные данные пакетной команды находятся в формате HTML. Комбинация "at" и "sendmail" создает заголовки и завершает заголовок разрывом строки, поэтому включение информации заголовка, например Content-Type, считаются частью тела.
Я ожидаю, что когда письмо будет прочитано современным клиентом, Content-type будет правильно установлен на «text / html».
Я рад любому решению, включая: параметры командной строки, переменные среды, bash / perl / awk / scripts, предложения для новой программы пакетного выполнения.
Читая исходный код 'at', можно сказать, что это довольно тривиальный патч для изменения почтового заголовка, который создает команда at, чтобы включить поле content-type.
Полным ответом может быть добавление переменной окружения, например, AT_CONTENT_TYPE или аргумента командной строки, например, -c, чтобы команда at проверяла и проверяла значение на два допустимых значения: "plain" как значение по умолчанию и "html" как допустимый альтернативный вариант.
Конечно, это сделает вашу реализацию не соответствующей спецификации POSIX Спецификация POSIX для at, поэтому вам будет полезно скопировать и переименовать команду в соответствии с GNU General Public License.
Отправьте сообщение явно из вашего сценария, а не просто распечатайте вывод и положитесь на в
для отправки сообщения. Напишите HTML-код в файл и используйте mutt
, чтобы прикрепить его и отправить сообщение.
В качестве альтернативы можно написать сообщение с заголовками, структурой MIME и всем остальным и передать его по конвейеру sendmail -t -i
. Использование mutt
намного проще.
Я не думаю, что возможно делать то, что вы ищете. Я не знаю ни одной реализации в
, которая могла бы изнутри задания вносить какие-либо реальные изменения в результирующие заголовки сообщений.
Однако вы можете запустить сценарий как подпроцесс, который производит вывод HTML, перенаправляет этот вывод в файл и при необходимости добавляет любые окружающие заголовки перед передачей всего результирующего текстового блоба в sendmail -bm
как есть (и полагаясь на sendmail
для определения полей отправителя и получателя).
Что-то вроде очень надуманного примера:
>tempfile
echo 'From: nobody@localhost' >>tempfile
echo 'To: root@localhost' >>tempfile
echo 'Subject: list of files' >>tempfile
echo >>tempfile
ls -lh $HOME >>tempfile
echo 'Add more data here' >>tempfile
sendmail -bm <tempfile && rm -f tempfile
может делать примерно то, что вы хотите. (Вам, конечно, придется отрегулировать приведенное выше, чтобы включить все, что указывает на то, что вывод - это HTML.)