尝试在 mac OSX Mountain Lion 上发送 HTML 邮件

尝试在 mac OSX Mountain Lion 上发送 HTML 邮件

我正在尝试通过命令行发送带有 html 文件作为正文(实际上是黄瓜结果报告,如果重要的话)或附件(如果作为正文发送不起作用)的电子邮件

我已经根据 mutt 示例尝试了以下操作这个答案到另一个问题,但这会导致错误。

cat <<'EOF' Audit_Results.html | mutt -H -
To: [email protected]
Subject: "test sending html mail"
Content-Type: text/html

EOF

当我这样做时,我收到以下错误

No recipients were specified.

Mutt 是使用brew install mutt1.5.21 版本安装的。我能够通过“交互式”界面发送邮件,但只是使用简单的文本邮件进行了测试,没有任何 html 或附件。

我的目标是将黄瓜结果文件“Audit_Results.html”作为电子邮件发送。尽管该文件包含一些使用 webdriver 的方法创建的屏幕截图.screenshot_as(:base64),并使用 cucumber 的embed("data:image/png;base64,#{encoded_img}",'image/png')函数嵌入,但这似乎造成了一些问题。到目前为止,我已经成功地从报告中创建了一封 html 邮件(使用 sendmail),但它在 gmail 中无法正确显示。 (尽管如果作为附件发送,下载并用浏览器打开时它会正确格式化)似乎gmail至少不喜欢嵌入该格式图像的html电子邮件。因此,我最终可能需要将 html 报告作为附件发送。

答案1

如果您只想Audit_Results.html逐字发送,请使用以下语法:

mutt -e "set content_type=text/html" -s "Your audit results" [email protected] < Audit_Results.html

您无需预先编辑Audit_Results.html邮件标题,直接发送即可。

答案2

哦,我明白了。我打错了:

cat <<'EOF' - Audit_Results.html | mutt -H -

请注意 的额外-参数cat。如果没有它,标准输入cat将从此处文档重定向,但这没有用,因为cat没有读取其标准输入。该命令相当于cat Audit_Results.html,因此mutt没有收到任何标头,并抱怨它没有任何收件人的指示(没有To:)。在更正的代码片段中,cat有两个参数:(-表示标准输入)和Audit_Results.html,因此mutt接收标头,后跟有效负载。

至于内容类型,事实证明 Mutt 会忽略提供的Content-Type标头并使用选项覆盖它content_type,因此您需要content_type在命令行上设置该选项:

cat <<'EOF' - Audit_Results.html | mutt -e 'set content_type=text/html' -H -
To: [email protected]
Subject: "test sending html mail"
EOF

如果您要走这条路,您也可以通过命令行选项传递其他标头。

mutt -e 'set content_type=text/html' -s 'test sending html mail' [email protected] <Audit_Results.html

并非所有邮件阅读器都支持 CS 和 Javascript。如果您需要适应某些受限读者,您可能需要调整 HTML 的生成方式。这包括网络邮件阅读器,它们需要禁用大多数活动功能,以免与网络邮件应用程序发生冲突。

答案3

上面的两个答案都适用于以 html 格式发送 HTML 作为消息正文。

不幸的是,cucumber HTML 报告的内容对于大多数邮件阅读器来说有点过于复杂,因此报告的呈现效果不太好,并且嵌入的图形完全丢失。

因此,就使用 Mutt 而言,我最终所做的是使用以下命令将 HTML 作为附件发送

echo "your audit results are attached" | mutt -s "Your audit results" -a Audit_Results.html -- [email protected] 

相关内容