在 Linux 中使用 sendmail 发送带附件(图片)的邮件(ksh)

在 Linux 中使用 sendmail 发送带附件(图片)的邮件(ksh)

我正在尝试使用以下命令发送邮件。我将此命令从 sqr 发送到命令行,工作正常。$FilePath_mailToFrom和其他信息以及 HTML 格式的邮件正文。我想在正文中包含图像(徽标),因此我想将其作为附件发送。

/usr/sbin/sendmail -t < $FilePath_mail

我需要更改上述命令以将附件(基本上是图像)添加到邮件中?

答案1

您需要将图像作为 MIME 部分添加到邮件中,然后使用Content-ID已答复的 (CID)引用它这里

背后的人快递MTA已经实现了实用程序模仿。它将作为 Courier MTA 的一部分安装,但在某些系统上,它是一个独立的软件包或作为邮件投递公用事业。

makemime使得从命令行对邮件消息进行 MIME 编码变得更加容易。他们页面上的示例是:

例如:

# Take two files containing the text and the html version of a message, and
# add MIME headers to them.

makemime -c "text/plain; charset=iso-8859-1" -o tmp1.txt msg.txt
makemime -c "text/html; charset=iso-8859-1" -o tmp1.html msg.html

# Combine the result into a multipart/alternative collection

makemime -m "multipart/alternative" -a "Content-Disposition: inline" \
                                -o tmp.ma1 tmp1.txt
makemime -j tmp.ma1 -o tmp.ma2 tmp1.html

# Add MIME headers to an image attachment.

makemime -c "image/gif" -a "Content-Disposition: attachment" \
                        -o tmp2.gif attachment.gif

# Create the final multipart/mixed collection

makemime -m "multipart/mixed" -a "Mime-Version: 1.0" \
                              -o tmp.mm1 tmp.ma2
makemime -j tmp.mm1 -o output.msg tmp2.gif

output.msg 现在包含完整的 MIME 集合。只需添加“Subject:”、“From:”和“To:”标头(当然也可以通过附加 -a 选项来完成),然后继续发送。

这就是你所要求的——而且这是可以做到的。使用类似的工具makemime可以使该过程相当安全。

不过,您应该阅读 Sendgrid 的文章“如何在电子邮件中嵌入图像:事实”。由于许多客户端处理不当,我通常最终只是引用网络服务器上的图像。这是最简单的方法,尽管它通常需要用户“单击查看”,但它似乎可以在客户端之间提供最一致的结果。

另一种选择是将徽标内联嵌入 HTML 源代码中。

 <img alt="Logo" src="data:image/jpeg;base64,">

或者

 <img alt="Logo" src="data:image/png;base64,"

之后添加图像文件的 Base64 编码数据,base64,然后就可以开始了。但同样,许多客户不会喜欢它。

您可以使用以下命令在线对文件进行编码base64encode.org。我强烈建议首先使用类似的东西压缩图像小PNG

答案2

如果您选择仅发送图像,您可以随时通过电子邮件发送图像mpack

您需要的语法大致是:

mpack -s "This is my image" $FilePath_mail [email protected]

man mpack

姓名

   mpack - pack a file in MIME format

描述 mpack 程序将指定文件编码为一个或多个 MIME 消息。生成的消息将邮寄给一个或多个收件人、写入指定文件或一组文件,或者发布到一组新闻组。

在 Debian 中,您可以按以下方式安装它:

sudo apt-get install mpack

相关内容