Gostaria de criar uma text/plain
mensagem usando a formatação Markdown e transformá-la em uma multipart/alternative
mensagem onde a text/html
parte foi gerada a partir do Markdown. Tentei usar o comando filter para filtrar isso por meio de um programa python que cria a mensagem, mas parece que a mensagem não foi enviada corretamente. O código está abaixo (este é apenas um código de teste para ver se consigo enviar multipart/alternative
mensagens.
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()
Infelizmente, no mutt, você só recebe o corpo da mensagem enviado para o comando de filtro quando você compõe (os cabeçalhos não estão incluídos). Depois de fazer isso funcionar, acho que a parte da redução não será muito difícil.
Responder1
Eu comentaria mais sobre a questão, mas estou bloqueado devido à reputação.
Tentei criar alternativas multipartes em mutt em um script wrapper para meu editor, conforme sugerido por @ n611x007. Criei com sucesso um script python que aceitou um e-mail elaborado pelo editor e, em seguida, criei uma nova mensagem que era uma alternativa multipartes da mesma mensagem.
No entanto, mutt interpretou o e-mail rfc2822 alternativo válido de várias partes resultante como algo que só poderia ser um corpo simples e reformulou o mutltipart como um componente de texto/mime simples muito difícil de ler.
Portanto, suspeito que gerar uma mensagem mime multipartes por meio de script não seja realmente possível por meio de uma abordagem interativa, embora certamente seja possível fazê-lo manipulando explicitamente a carga útil mime na tela pós-criação, onde normalmente seria possível criar anexos, etc. No entanto, o fluxo de trabalho não é bom o suficiente para algo que se possa fazer regularmente.
A abordagem alternativa seria gerar a alternativa multipart como parte da transmissão, como um wrapper para o comando sendmail local ou como um script que envolve a comunicação direta com smtp/s. Alguns exemplos dessa abordagem sãohttps://pypi.python.org/pypi/muttdown/ehttp://chrismdp.com/2013/10/using-markdown-to-send-html-email-via-mutt/