以下代码无法一起使用。我可以单独发送带有HTML表的邮件,也可以发送带有附件的邮件,但是我希望在一封邮件中同时执行这两项。请帮忙。
请不要给我答复尝试使用uuencode或base64或mutt,因为它们未安装在我的UNIX系统中。
代码:
(echo "To:"
echo "Cc:"
echo "Subject: Server Status"
echo "Content-Type: text/html"
echo
echo "<html> <head> <title> </title>
<style> table, th, td { border: 1px solid blue; border-collapse: collapse; }
th, td { padding: 5px; } </style> </head>
<body> <table style='width:100%'>
<tr bgcolor='#808080'> <th>MEMORY</th> <th>DISK</th> <th>CPU</th> </tr>
<tr> <td>"$MEMORY"</td> <td>"$DISK"</td> <td>"$CPU"</td> </tr> </table>
</body></html>") | mail -s "This is the subject" -a /location/*.xlsx mailaddress
答案 0 :(得分:0)
问题不在于发送表,而是在于尝试发送带有内容类型和附件的预先编写的HTML文本。这是Linux mail
程序无法做到的。
问题出在Content-Type
标头上。对于仅包含HTML正文的邮件,它应为text/html
,但是如果包含附件且所有部分均根据RFC2046(实际上是RFC2046至2049)正确编码,则为multipart/mixed
。
作为扩展,Linux邮件可以将附件添加到纯文本消息(原始mailx程序不添加附件),但是不能添加到html或混合/替代的邮件。
由于您不想使用比 mail 更多的功能丰富的工具来准备消息,因此您将面临死胡同:mail
简直无法生成此消息。
由于mutt
是类似Unix的世界中事实上的标准,用于从shell发送mime消息,因此我找不到其他能够满足您需求的简单工具。抱歉。