你真的不能这样做。Mutt 不是用来以编程方式发送消息的,它是一个交互式邮件客户端。用于发送消息的命令行标志仅作为次要附加组件存在,以这种方式不可能实现很多。
该my_hdr命令不应该用于设置 MIME 标头,例如Content-Type. 即使您不包含附件,它也不会真正起作用。第二个命令的消息将有两个Content-Type标题;mutt 生成的第一个声明消息是text/plain,而您指定的第二个。碰巧您用来检查消息的客户端正在查看您的标题。对我来说,mutt 会将该消息显示为 HTML,但 Thunderbird 会显示未渲染的文档。
当尝试结合发送 HTML 和附件时,会发生同样的事情。有多个Content-Type标题。第一个来自 mutt 说消息是multipart/mixed,第二个说它是text/html。在我的测试中,mutt 将再次尊重第二个标题,因此尝试将整个消息(包括附件)呈现为 HTML。Thunderbird 再次尊重第一个Content-Type标头,因此找到了两个部分,HTML 和附件,但 HTML 部分没有自己的Content-Type标头指定它是 HTML,因此它不会按原样呈现,而是原始源是显示。
通过将 HTML 和 PDF 作为附件发送,正文为空,您可以稍微接近一点:
mutt -s "Subject" -a mybody.html -a file.pdf -- user@example.com < /dev/null
但是您可能最好使用实际上旨在以编程方式发送更复杂消息的工具。