Markdown フォーマットを使用してメッセージを作成し、その部分を Markdown から生成したメッセージtext/plain
に変換したいと思います。filter コマンドを使用して、メッセージを作成する Python プログラムでこれをフィルター処理しようとしましたが、メッセージが正しく送信されないようです。コードは次のとおりです (これは、メッセージを作成できるかどうかを確認するためのテスト コードです)。multipart/alternative
text/html
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
この質問についてさらにコメントしたいのですが、評判の問題でブロックされています。
@n611x007 の提案に従って、エディターのラッパー スクリプトで mutt のマルチパート代替を作成しようとしました。エディターで作成されたメールを受け入れ、同じメッセージのマルチパート代替である新しいメッセージを作成する Python スクリプトを正常に作成しました。
しかし、Mutt は、作成された有効なマルチパート代替 rfc2822 メールをプレーンな本文としてしか解釈できず、マルチパートを非常に読みにくいテキスト/プレーンな MIME コンポーネントとして再作成しました。
したがって、スクリプトを使用してマルチパート MIME メッセージを生成することは、インタラクティブなアプローチでは実際には不可能であると私は疑っています。ただし、通常は添付ファイルなどを作成する作成後の画面で MIME ペイロードを明示的に操作することで、確かにそれが可能です。ただし、このワークフローは、定期的に行う作業には十分ではありません。
代替アプローチとしては、送信の一部として、ローカルのsendmailコマンドのラッパーとして、またはsmtp/sとの通信を直接ラップするスクリプトとして、マルチパート代替を生成することが考えられます。このアプローチの例をいくつか示します。pypi.python.org/pypi/muttdown/ を参照してください。そしてhttp://chrismdp.com/2013/10/using-markdown-to-send-html-email-via-mutt/