4

Я хотел бы создать 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 вы получаете тело сообщения, отправленное команде filter, только когда вы пишете (заголовки не включены). Как только я получу эту работу, я думаю, что часть уценки не будет слишком сложной.

1 ответ1

0

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

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

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

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

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

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