今、Pythonでサイトに変更があったらメールを送るようにしてるんだけど、Linuxでのmailコマンドを使っていると、どうも件名が文字化けする場合がある。
「Pythonで検出しているんだったら、Pythonでメール送るようにすればいいんじゃね?」
ってことで、Pythonでメールを送る方法を調べてみました。
簡単にできるんだね。先駆者の方々、ありがとう。
Google先生に聞いてみたらすぐ答えが出てきました。
Pythonの標準ライブラリでもメールを送ることが出来るらしい。
コードは以下の様な感じ。
# -*- coding: utf-8 -*- import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate if __name__ == "__main__": from_address = "sample@test.test" to_address = "XXXXXXX@gmail.com" charset = "ISO-2022-JP" subject = u"メールの件名です" text = u"メールの本文です" msg = MIMEText(text.encode(charset),"plain",charset) msg["Subject"] = Header(subject,charset) msg["From"] = from_address msg["To"] = to_address msg["Date"] = formatdate(localtime=True) smtp = smtplib.SMTP("localhost") smtp.sendmail(from_address,to_address,msg.as_string()) smtp.close()
自分で変更したのは
smtp = smtplib.SMTP("localhost")
のところ。
"localhost"のところはサーバのドメインとかを入れるらしいんだけど、メール送信にはPostfixを使っていて、何も設定していないからlocalhostから送ることになるらしい。ここだけがハマったところ。
ちなみに、省略するとlocalhost:25で送られるとのこと。明示的に書かなくても良かったんだ・・・・
Postfixの勉強にもなった。確かに不思議だったんだよね。mailコマンドで送った場合、データとしてはどこを参考にしていたのかよくわかってなかったから。
いや〜。便利だ便利だ。すでにあるコードと結合させよう。