【问题标题】:using mutt to send html email with an attachment使用 mutt 发送带有附件的 html 电子邮件
【发布时间】:2012-11-17 15:24:52
【问题描述】:

我一直在使用 mutt 发送带有 pdf 附件的纯文本电子邮件:

mutt -s "主题" -a file.pdf

和不带附件的 html 电子邮件使用:

mutt -e "my_hdr Content-Type: text/html" -s "主题"

但我现在想发送一封带有 pdf 附件的 html 电子邮件,并且:

mutt -e "my_hdr Content-Type: text/html" -s "Subject" -a file.pdf

不工作。

html 和编码的 pdf 及其标题在电子邮件正文中都显示为纯文本。

有人知道怎么做吗?

干杯

加里

【问题讨论】:

    标签: mutt


    【解决方案1】:

    凯莱布·罗杰·戴维斯

    笨蛋版本:1.5.21

    在同事的一些研究和帮助下,我得以完成这项工作(将 html 文件作为正文和 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"
    

    【讨论】:

    • 为了记录,@MoabTek 的解决方案对我有用。我正在使用 mutt 1.5.20。
    【解决方案2】:

    你真的不能这样做。 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
    

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

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2013-11-26
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      相关资源
      最近更新 更多