我一直在使用mutt来发送带有pdf附件的纯文本电子邮件:
mutt -s“Subject”-a file.pdf< mybody.txt
和没有附件的html电子邮件:
mutt -e“my_hdr Content-Type:text / html”-s“Subject”< mybody.html
但我现在想发送带有pdf附件的html电子邮件,并且:
mutt -e“my_hdr Content-Type:text / html”-s“Subject”-a file.pdf< mybody.html
不起作用。
html和编码的pdf及其标题都显示为电子邮件正文中的纯文本。
任何人都知道怎么做?
干杯
加里
答案 0 :(得分:7)
Caleb Roger Davis
Mutt版本:1.5.21
通过一些同事的研究和帮助,我能够将其发挥作用(将html文件作为body& pdf附件发送)。
我有.html文件& .pdf作为单独的文件。我在发送之前在.html文件中做了一些关键字替换(替换了客户名等)。
这是适用的bash脚本。
我想如果有人有兴趣的话,我也可以使用sendmail。
#!/bin/bash
START=`date`
# --------------------------------------------------------------------------------------
# can be comma delimited list of email addresses
FROM=me@mycom.com
TO=me@mycom.com
subject="Monthly PDF report"
attachments="../src/test/resources/my.pdf ../src/test/resources/my2.pdf"
html_file="../src/main/resources/email_template.html"
# --------------------------------------------------------------------------------------
# send html with pdf attachment
# You can send additional attachments, the attachment list can be terminated with the "--"
mutt -e "set content_type=text/html" -s "$subject" $TO -a $attachments -- < $html_file
END=`date`
echo "START=$START"
echo "END=$END"
答案 1 :(得分:5)
你真的不能这样做。 Mutt不是用于以编程方式发送消息,而是用于交互式邮件客户端;用于发送消息的命令行标志仅作为次要附加组件,有很多不可能以这种方式进行。
my_hdr
命令不应用于设置Content-Type
之类的MIME标头。即使您不包含附件,它也不会起作用。来自第二个命令的消息将有两个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
但是,您可能最好使用实际上旨在以编程方式发送更复杂邮件的工具。