我正在尝试通过命令行发送带有 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 mutt
1.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]