在 Linux 中创建多部分电子邮件并发送

在 Linux 中创建多部分电子邮件并发送

我们使用 mutt 发送电子邮件。

mutt -s "Test" -e "Content-Type: text/html" [email protected] < message.html

我们以 HTML 格式发送电子邮件更新。我们希望以包含文本版本和 HTML 版本的多部分形式发送电子邮件。

  1. 当给出电子邮件主题以及电子邮件正文的 HTML 和文本版本时,我们如何在 Linux 中创建这样的多部分消息?
  2. 我们可以使用 mutt 从 Linux 提示符发送步骤 1 中创建的多部分电子邮件吗?

环境:RedHat Enterprise Linux 5,mutt

答案1

当给出电子邮件主题以及电子邮件正文的 HTML 和文本版本时,我们如何在 Linux 中创建这样的多部分消息?

multipart/alternative创建如下类型的消息RFC 2046

来自:示例公司 <[电子邮件保护]>
收件人:Joe 用户 <[电子邮件保护]>
日期:2011 年 5 月 21 日星期六 17:40:11 +0300
主题:多部分消息示例
MIME 版本:1.0
内容类型:multipart/alternative;边界=asdfghjkl

--asdfghjkl
内容类型:text/plain;字符集=utf-8

大家好!

--asdfghjkl
内容类型:text/html;字符集=utf-8

<!DOCTYPE html>
<主体>
<p>大家好!</p>
</主体>

--asdfghjkl--

RFC 2046RFC 5322以获得确切的语法。

我们可以使用 mutt 从 Linux 提示符发送步骤 1 中创建的多部分电子邮件吗?

如果您找到设置正确 Content-Type 标头的方法。(在您的示例中,您使用的是-e,但 mutt 用于-e不同的目的。甚至-e "my_hdr Content-Type: ..."保留原始文本/纯文本标头不变。)

最好直接通过 发送生成的邮件sendmail。您必须自己创建标题 - 请参阅示例;使用strftime("%a, %d %b %Y %T %z")日期和一串随机字母数字字符作为边界。然后将准备好的消息(包括标题)通过管道传输到sendmail -i -t

sendmail -i -t < above-example.txt

(该-t选项的意思是“从到:线”;您也可以使用)sendmail -i [email protected]

答案2

看一眼https://github.com/shivylp/mailprod。我开发了这个小型 Python 实用程序/库,因为使用命令行处理大型邮件似乎不是一个可靠的选择。使用 mailprodcli 就像说 一样简单mailprodcli template.xml --send。甚至包含图像的示例 template.xml 也很简单:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>[email protected]</from>
  <to>[email protected]</to>
  <to>[email protected]</to>
  <body type="text/html">
    <![CDATA[<html>
<b>Neat!</b><br><center><img src="cid:sample"></center>
</html>]]>
  </body>
  <body type="image" src="sample.png" id="sample" />
</mail>

相关内容