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

use*_*192 12 linux email mutt

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

mutt -s "Test" -e "Content-Type: text/html" test@example.com < message.html

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

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

环境:RedHat Enterprise Linux 5,mutt

use*_*686 10

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

创建RFC 2046 中multipart/alternative记录的类型的消息:

来自:示例公司 <news@example.com>
致:Joe 用户 <joe.u@example.net>
日期:2011 年 5 月 21 日星期六 17:40:11 +0300
主题:多部分消息示例
MIME 版本:1.0
内容类型:多部分/替代;边界=asdfghjkl

--asdfghjkl
内容类型:文本/纯文本;字符集=utf-8

大家好!

--asdfghjkl
内容类型:文本/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
Run Code Online (Sandbox Code Playgroud)

(该-t选项的意思是“从To:行获取收件人”;您也可以使用sendmail -i joe.u@example.net