Отправить письмо из команды UNIX с вложением и текстом сообщения HTML

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

Я пытаюсь отправить письмо с отчетом из командной строки 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 "<HTML><BODY><PRE>";
cat /tmp/report_details.html;
echo "</PRE></BODY></HTML>";
) | /usr/sbin/sendmail -t

У меня нет опции Mutt, но я попробовал sendmail, mailx и почтовый сервис, и ни один из них не может помочь мне удовлетворить мою, по-видимому, простую потребность

ОС Unix: Solaris 10 8/07 s10s_u4wos_12b SPARC

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

1 ответ

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

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

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

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

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

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

#!/bin/sh
(
# Email headers and html header body in body 
cat - <<END
From: From@xyz.vom
To: Address@xyz.vom
Subject: Test Message 1 2 3
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: inline

<HTML><BODY><PRE>
END
# file to be "HTMLized" 
cat /tmp/report_details.html
# html footer in body
cat - << END_FOOTER
</PRE></BODY></HTML>
END_FOOTER
)
| /usr/sbin/sendmail -t -- 'Address@xyz.vom'
Другие вопросы по тегам