pythonでEmail自動生成スクリプトを作って得たTips
久しぶりの備忘録的なブログ。
この前、Email処理を楽にするスクリプトを書いたとき、ちょっとした知見が得られたので、備忘。
今回、メールを送信する前に人間の目で最終確認、ちょこっと編集をしたかったので、
任意のディレクトリ下にメールファイル(.eml)を生成していくスクリプトを作っていました。
そこで、気になったことが1つ。
生成したメールファイル(.eml)を開くと、メールソフトが立ち上がるのですが、
編集状態ではなく、受信したメールと同様に編集不可の状態で開かれてしまいました。
これは、Windows Live Mail (WLM) での動作のようで、
私が私的にメインで使っている Thunderbird では、
再送信(再編集)の項目がメニューにあり、ひと手間かかるようですが、再編集状態にできました。
ただ、仕事でWLMを使えと言われたら、使わないといけませんので、どうにかしようと思って検索をしていたら見つけました。
上記のページを読むと、Header中の X-Unsent に 1 を入れればよい、とのこと。
そして、肝となる部分を抜粋してきたコードが以下。
環境
- python 3.5.1
- email(標準ライブラリ)
import email from email.mime.text import MIMEText from email.utils import formataddr from email.header import Header from email import generator from_addr = 'from_addr@mail' to_addr = 'to_addr@mail' subject = "メール件名" body = "メール本文" encoding = 'utf-8' sender_name = Header('fromのニックネーム', encoding).encode() message = MIMEText(body.encode(encoding), 'plain', _charset=encoding) message['Subject'] = Header(subject, encoding) message['From'] = formataddr((sender_name, from_addr)) message['To'] = to_addr message.add_header('X-Unsent', '1') with open('test.eml', 'w') as eml: gen = generator.Generator(eml) gen.flatten(message) print("** end **")