Создание многокомпонентных/альтернативных писем в Mutt?

Создание многокомпонентных/альтернативных писем в Mutt?

Я хотел бы создать text/plainсообщение с использованием форматирования Markdown и преобразовать его в multipart/alternativeсообщение, часть которого text/htmlбыла сгенерирована из Markdown. Я пробовал использовать команду filter, чтобы отфильтровать это через программу Python, которая создает сообщение, но, похоже, сообщение не отправляется должным образом. Код ниже (это просто тестовый код, чтобы проверить, могу ли я multipart/alternativeвообще создавать сообщения.

import sys
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

html = """<html>
          <body>
          This is <i>HTML</i>
          </body>
          </html>
"""

msgbody = sys.stdin.read()

newmsg = MIMEMultipart("alternative")

plain = MIMEText(msgbody, "plain")
plain["Content-Disposition"] = "inline"

html = MIMEText(html, "html")
html["Content-Disposition"] = "inline"

newmsg.attach(plain)
newmsg.attach(html)

print newmsg.as_string()

К сожалению, в Mutt вы получаете только тело сообщения, отправленное команде фильтра при составлении (заголовки не включены). Как только я заставлю это работать, я думаю, что часть с разметкой не будет слишком сложной.

решение1

Я бы прокомментировал этот вопрос подробнее, но меня заблокировали из-за репутации.

Я попытался создать многокомпонентные альтернативы в mutt в скрипте-оболочке для моего редактора, как предложил @n611x007. Я успешно создал скрипт python, который принял созданное редактором письмо, а затем создал новое сообщение, которое было многокомпонентной альтернативой того же сообщения.

Однако Mutt интерпретировал полученное в результате корректное многокомпонентное альтернативное письмо rfc2822 как нечто, что может быть только простым телом, и переформулировал multlipart как очень сложный для чтения компонент text/plain mime.

Поэтому я подозреваю, что создание составного MIME-сообщения с помощью скрипта на самом деле невозможно с помощью интерактивного подхода, хотя это, безусловно, возможно сделать, явно манипулируя полезной нагрузкой MIME на экране после создания, где обычно можно создавать вложения и т. д. Однако рабочий процесс недостаточно хорош для того, что можно делать регулярно.

Альтернативный подход заключается в создании альтернативы multipart как части передачи, как оболочки для локальной команды sendmail или как скрипта, который обертывает общение с smtp/s напрямую. Вот несколько примеров такого подхода:https://pypi.python.org/pypi/muttdown/иhttp://chrismdp.com/2013/10/using-markdown-to-send-html-email-via-mutt/

Связанный контент