Создание составного электронного письма и его отправка в Linux


12

Мы используем 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

Ответы:


10

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

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

От: Пример компании <news@example.com>
To: Joe User <joe.u@example.net>
Дата: сб, 21 мая 2011 г. 17:40:11 +0300
Тема: Пример составного сообщения
MIME-версия: 1.0
Тип контента: составной / альтернативный; граница = asdfghjkl

--asdfghjkl
Тип контента: текстовый / простой; кодировка = UTF-8

Всем привет!

--asdfghjkl
Content-Type: text / html; кодировка = UTF-8

<! DOCTYPE html>
<Тело>
<p> Привет всем! </ 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)


Спасибо за отличный ответ, благодарность! Спасибо также за подробное объяснение того, как составить составное письмо. :)
user544192

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.