Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 从UNIX命令发送带有附件和HTML消息正文的电子邮件_Shell_Email_Unix_Sendmail_Mailx - Fatal编程技术网

Shell 从UNIX命令发送带有附件和HTML消息正文的电子邮件

Shell 从UNIX命令发送带有附件和HTML消息正文的电子邮件,shell,email,unix,sendmail,mailx,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

这听起来可能是一个愚蠢的问题,但我已经尝试并搜索了很多选项,没有一个符合我的要求

我试图使用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
(
“回声”来自:From@xyz.vom";
“回音”至:Address@xyz.vom";
回显“主题:测试消息1 2 3”;
echo“内容类型:text/html”;
echo“MIME版本:1.0”;
echo“内容配置:内联”;
回声“;
cat/tmp/report_details.html;
回声“;
)|/usr/sbin/sendmail-t
我没有mutt选项,但我尝试了sendmail、mailx和mail服务,但没有一个能够帮助我满足我明显简单的需求

Unix操作系统:Solaris 10 8/07 s10s_u4wos_12b SPARC

注意:不要将其标记为与现有答案重复,因为他们可以选择发送附件或html正文或带有普通正文的附件。

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

您的脚本存在严重错误:

  • 缺少“标题结尾”(空行)
  • 缺少
    -i
    sendmail命令行选项
  • 您的脚本建议改进:

  • 将收件人从邮件头移动到sendmail命令行
  • 内容类型中缺少
    字符集
    (除非使用US-ASCII)
  • 缺少内容传输编码(除非您使用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'
    
    #/垃圾箱/垃圾箱
    (
    #正文中的电子邮件标题和html标题正文
    
    cat-IIRC,在标题和内容之间需要有一个空行,行的结尾应该是CRLF(尽管这可能并不重要).FWIW,当我在我的Ubuntu 16.04系统上使用
    sendmail
    二进制文件的后缀实现时,你的
    sendmail
    命令运行得很好。@Anthony Geoghegan:两者单独运行都很好,但正如我所说的,sendmail只发送正文,没有附件选项。我的sendmail脚本运行得很好,我无法发送附件正如我在问题
    sendmail
    command(由sendmail/postfix/exim/…提供)中提到的,附件是一个“低级工具”。附件没有命令行选项-您必须自己生成格式正确的消息。对于“单个MIME部分”消息来说,这非常简单。