
今、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コマンドで送った場合、データとしてはどこを参考にしていたのかよくわかってなかったから。
いや〜。便利だ便利だ。すでにあるコードと結合させよう。
![Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus) Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)](https://m.media-amazon.com/images/I/51PtA5QZUZL._SL500_.jpg)