Я хотел бы создать 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/