使用mutt发送带附件的html电子邮件

时间:2012-11-29 14:16:50

标签: mutt

我一直在使用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及其标题都显示为电子邮件正文中的纯文本。

任何人都知道怎么做?

干杯

加里

2 个答案:

答案 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

但是,您可能最好使用实际上旨在以编程方式发送更复杂邮件的工具。