如何在 UNIX 中向 HTML 电子邮件添加附件?

如何在 UNIX 中向 HTML 电子邮件添加附件?

我必须从 UNIX 计算机通过电子邮件发送电子邮件正文中的 HTML 文件。让我们将 HTML 文件称为hello.html

我在中使用以下代码bash script

(
echo "To: [email protected]" 
echo "Subject: Report" 
echo "Content-Type: text/html" 
echo
cat hello.html
echo 
) | /usr/sbin/sendmail -t

上面的代码对我来说工作得很好。现在我还想在这封电子邮件中附加一个 zip 文件。有什么办法可以做到这一点吗?

我仅限于使用mail,mailx/usr/sbin/sendmail

答案1

我建议您向自己发送一封带有 zip 文件附件的实际电子邮件,并查看原始内容。

您会发现电子邮件的格式将按照哑剧标准,指定如何在文本电子邮件中包含各种文件格式。

在你的情况下,顶级内容类型会是这样的多部分/替代或者多部分/混合。其中将有两个或多个具有自己的部分或部分内容类型。一个会有类型应用程序/zip。这应用程序/zip部分将包含 zip 文件的文本编码(例如 Base 64)。

这是一个示例:

From: John Doe <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary="XXXXboundary text"

This is a multipart message in MIME format.

--XXXXboundary text 
Content-Type: text/plain

this is the body text


--XXXXboundary text 
Content-Type: text/html

<html>
  ...Body of email in HTML format...
</html>

--XXXXboundary text 
Content-Type: application/zip;
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
        filename="test.zip"

BASE64 ENCODING TEXT HERE

--XXXXboundary text--

更多信息:使用 MIME 的电子邮件文件附件

回到你问题的根源,如何做到这一点?我不熟悉任何可以帮助构建这样的电子邮件的独立工具,但如果您找不到有用的东西,我会感到惊讶。也许电子邮件客户端之一支持命令行/批量操作。但如果情况最糟,它只是 ASCII 文本,因此您可以按照处理 HTML 电子邮件的方式轻松手动构建它。但我建议您在将消息传送到邮件代理之前将其构建在临时文件中。 (查看“此处文档”以轻松保存大量文本。)

如前所述,您需要将 zip 文件转换为 Base 64。几乎每个 Linux 安装都应该有该base64实用程序或等效工具。只需将您的 zip 传递给它并在适当的时间附加到您的电子邮件文件...

base64 test.zip >> my-email-file.txt

答案2

#!/usr/bin/ksh
export MAILTO="email_address"
export CONTENT="/export/home/aisdba/email_body.html"
export SUBJECT="subject of email"
(
echo "Subject: $SUBJECT"
echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $CONTENT
) | /usr/sbin/sendmail $MAILTO

( 或 ) 作为您可以发送的内联邮件。

cat <<'EOF' - CH_ARG.html | /usr/sbin/sendmail $TARGET_DL
Subject: your subject line
Content-Type: text/html
MIME-Version: 1.0
Content-Disposition: inline
EOF

( 或 ) 尝试下面的附件

cat <<'EOF' - CH_ARG.html | /usr/sbin/sendmail $TARGET_DL
Subject: Your subject line
Content-Type: text/text
MIME-Version: 1.0
Content-Disposition: attachment
EOF

相关内容