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


12

我们使用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

Answers:


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
内容类型:text / html;字符集= utf-8

<!DOCTYPE html>
<身体>
<p>大家好!</ p>
</ body>

--asdfghjkl--

有关确切的语法,请参见RFC 2046RFC 5322

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

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

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

sendmail -i -t < above-example.txt

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


感谢您的出色回答,谢谢!也感谢您详细解释如何撰写多部分电子邮件。:)
2011年

0

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

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>sender@source.com</from>
  <to>recipient1@destination1.com</to>
  <to>recipient2@destination2.com</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>

这还会发送纯文本版本吗?我相信OP希望发送多部分电子邮件,其中HTML和纯文本内容都包含在同一封邮件中。
cascer1年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.