Отправить письмо от команды UNIX с вложением и текстом сообщения HTML - PullRequest
0 голосов
/ 01 июня 2018

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

Я пытаюсь отправить письмо с отчетом из командной строки unix, используя bashСценарий, мне удалось отправить его с телом и вложением, используя сервис mailx, но тело не отформатировано и не радует глаз

(echo "$(cat /tmp/report_summary.html)";uuencode /tmp/report_details.xls report_details.xls) |/usr/bin/mailx -s "Report for XYZ" $MAIL_GRP

Я попробовал опцию sendmail, которая отлично форматирует тело сообщения, ноне имеет опции для вложения

(
echo "From: From@xyz.vom";
echo "To: Address@xyz.vom";
echo "Subject: Test Message 1 2 3";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "Content-Disposition: inline";
echo "";
cat /tmp/report_details.html;
echo "
";) | / usr / sbin / sendmail -t

У меня нет опции Mutt, но я пыталсяsendmail, mailx и mail service, и никто не в состоянии помочь мне удовлетворить мою, по-видимому, простую потребность

ОС Unix: Solaris 10 8/07 s10s_u4wos_12b SPARC

Примечание: не отмечайте это как дубликатсуществующие ответы, так как они либо имеют возможность отправить вложение или HTML-текст или вложение с простым телом.

1 Ответ

0 голосов
/ 02 июня 2018

Отправка "единственной части MIME" с помощью sendmail (команда низкого уровня) довольно проста.

Ваши серьезные ошибки скрипта:

  1. Отсутствует "END OF HEADERS" (пустая строка)
  2. Отсутствует -i Параметр командной строки sendmail

Ваш сценарий предложил улучшения:

  1. Перемещение получателей из заголовков в командную строку sendmail
  2. Отсутствует charset в Content-type (если вы не используете US-ASCII)
  3. Отсутствует Content-Transfer-Encoding (если вы не используете US-ASCII = 7 бит)

Исправленный скрипт:

#!/bin/sh
(
# Email headers and html header body in body 
cat - 
END
# file to be "HTMLized" 
cat /tmp/report_details.html
# html footer in body
cat - 
END_FOOTER) |/ usr / sbin / sendmail -t - 'Address@xyz.vom'
...