Как настроить 'at' и 'sendmail' для вывода почты с Content-Type: text / html

Я обновляю некоторые пакетные программы для вывода html, а не текста. Пакетные программы запускаются с помощью команды at, которая, в свою очередь, отправляет весь вывод пользователю с помощью команды sendmail.

Поскольку команда at составляет заголовки для электронной почты, я застрял в том, как указать команде at или sendmail, что выходные данные пакетной команды находятся в формате HTML. Комбинация "at" и "sendmail" создает заголовки и завершает заголовок разрывом строки, поэтому включение информации заголовка, например Content-Type, считаются частью тела.

Я ожидаю, что когда письмо будет прочитано современным клиентом, Content-type будет правильно установлен на «text / html».

Я рад любому решению, включая: параметры командной строки, переменные среды, bash / perl / awk / scripts, предложения для новой программы пакетного выполнения.

0
14.07.2016, 18:30
3 ответа

Читая исходный код 'at', можно сказать, что это довольно тривиальный патч для изменения почтового заголовка, который создает команда at, чтобы включить поле content-type.

Полным ответом может быть добавление переменной окружения, например, AT_CONTENT_TYPE или аргумента командной строки, например, -c, чтобы команда at проверяла и проверяла значение на два допустимых значения: "plain" как значение по умолчанию и "html" как допустимый альтернативный вариант.

Конечно, это сделает вашу реализацию не соответствующей спецификации POSIX Спецификация POSIX для at, поэтому вам будет полезно скопировать и переименовать команду в соответствии с GNU General Public License.

0
28.01.2020, 02:48

Отправьте сообщение явно из вашего сценария, а не просто распечатайте вывод и положитесь на в для отправки сообщения. Напишите HTML-код в файл и используйте mutt , чтобы прикрепить его и отправить сообщение.

В качестве альтернативы можно написать сообщение с заголовками, структурой MIME и всем остальным и передать его по конвейеру sendmail -t -i . Использование mutt намного проще.

1
28.01.2020, 02:48

Я не думаю, что возможно делать то, что вы ищете. Я не знаю ни одной реализации в , которая могла бы изнутри задания вносить какие-либо реальные изменения в результирующие заголовки сообщений.

Однако вы можете запустить сценарий как подпроцесс, который производит вывод 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.)

0
28.01.2020, 02:48

Теги

Похожие вопросы