10

Мы используем Mutt для отправки писем.

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

Мы отправляем наши обновления по электронной почте в формате HTML. Мы хотели бы отправлять электронные письма, состоящие из нескольких частей, содержащие как текстовую, так и HTML-версию.

  1. Как мы можем создать такое многокомпонентное сообщение в Linux, когда дана тема письма, а также HTML и текстовые версии тела письма?
  2. Можем ли мы использовать Mutt для отправки составной электронной почты, созданной на шаге 1, из приглашения Linux?

Окружение: RedHat Enterprise Linux 5, mutt

2 ответа2

9

Как мы можем создать такое многокомпонентное сообщение в Linux, когда дана тема письма, а также HTML и текстовые версии тела письма?

Создайте сообщение типа multipart/alternative как описано в RFC 2046:

From: Example Company <news@example.com>
To: Joe User <joe.u@example.net>
Date: Sat, 21 May 2011 17:40:11 +0300
Subject: Multipart message example
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=asdfghjkl

--asdfghjkl
Content-Type: text/plain; charset=utf-8

Hello everyone!

--asdfghjkl
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<body>
<p>Hello everyone!</p>
</body>

--asdfghjkl--

См. RFC 2046 и RFC 5322 для точного синтаксиса.

Можем ли мы использовать Mutt для отправки составной электронной почты, созданной на шаге 1, из приглашения Linux?

Если вы найдете способ установить правильный заголовок 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 означает «получать получателей из строки To: »; вы также можете использовать sendmail -i joe.u@example.net)

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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .