mutt で multipart/alternative メールを作成しますか?

mutt で multipart/alternative メールを作成しますか?

Markdown フォーマットを使用してメッセージを作成し、その部分を Markdown から生成したメッセージtext/plainに変換したいと思います。filter コマンドを使用して、メッセージを作成する Python プログラムでこれをフィルター処理しようとしましたが、メッセージが正しく送信されないようです。コードは次のとおりです (これは、メッセージを作成できるかどうかを確認するためのテスト コードです)。multipart/alternativetext/htmlmultipart/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/

関連情報