![无法发送带有 HTML 正文和附件的电子邮件](https://linux22.com/image/1518520/%E6%97%A0%E6%B3%95%E5%8F%91%E9%80%81%E5%B8%A6%E6%9C%89%20HTML%20%E6%AD%A3%E6%96%87%E5%92%8C%E9%99%84%E4%BB%B6%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我无法发送带有附件的 HTML 正文的电子邮件。命令 1:
echo "<html><b>Hello</b></html>" | mail -s "Subject #1" -a "content-type: text/html" [email protected]
命令2:
echo "<html><b>Hello</b></html>" | mail -s "Subject #2" -a "content-type: text/html" [email protected] -A "/Users/asdf/Downloads/00000001.pdf"
Command1 工作正常。我看到带有 HTML 正文的电子邮件。
在第二个命令中,主体不是 html 格式。
如果我这里遗漏了什么,请告诉我。
答案1
我不知道您正在使用哪种邮件工具(以及哪个版本),但如果它是 GNU mailutils,您可能会遇到这个错误:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806#22 一种解决方法是使用命令行选项 -M(或 --mime)来撰写 MIME 消息。
答案2
附件总是使用多部分 MIME 消息发送,因此根内容类型描述了多部分结构本身,并且每个部分都有它自己的里面有 Content-Type 标头。Content-Type: multipart/related
如果你看一下这样的消息的来源,你就应该明白。
据我所知,mailutils 和 mailx 都没有单独更改正文部分的内容类型的选项。
答案3
使用当前版本的 GNU Mailutils,可以通过mailx
如下方式实现:
echo "<html><b>Hello</b></html>" | mailx --content-type="application/pdf" --attach=/Users/asdf/Downloads/00000001.pdf --content-type="text/html" --subject="Subject #2" [email protected]
请注意,这--content-type
是一个位置选项,指的是全部以下附件(如果有多个),并且最后指定的值也将用于邮件正文(这就是为什么它在最后再次更改的原因)。