使用附件和HTML邮件正文从UNIX命令发送电子邮件

时间:2018-06-01 20:36:46

标签: shell email unix sendmail mailx

这可能听起来像一个愚蠢的问题,但我尝试并搜索了很多选项,但都没有达到我的要求

我正在尝试使用bash脚本发送带有来自unix命令行的报告的邮件,我设法使用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 个答案:

答案 0 :(得分:1)

使用sendmail(低级命令)发送“单个MIME部分”非常简单。

你的剧本严重错误:

  1. 缺少“END OF HEADERS”(空行)
  2. 缺少-i sendmail命令行选项
  3. 您的脚本建议改进:

    1. 将收件人从标头移至sendmail命令行
    2. 内容类型中缺少charset(除非您使用US-ASCII)
    3. 缺少Content-Transfer-Encoding(除非您使用US-ASCII = 7bit)
    4. 更正后的脚本:

      #!/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'