Pythonでメール送信する

東京でも夏日を記録するなど、春を通り越してしまいそうな勢いですね。
気づけば、もう4月も中旬。早いものです。

4月初旬のマスターズゴルフを見て、
パトリックリードやリッキーファウラーになった気分で早速ラウンドしてきましたが、
ま、見るだけで上手くなったらライザップもゴルフをビジネスにしませんね。笑
天気には恵まれて気持ち良くプレーはできましたが、スコアは相変わらずボロボロでした。。

さて、ゴルフの話はまたにして、今日はpythonでちゃちゃっとメール送信してみます!

まず前提として、pythonをインストールしてください。
こちらに各環境でのpythonのインストール方法が丁寧に載っているので参考に。
https://www.sejuku.net/blog/33294

で、早速コードを。

# coding:utf-8
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate

from_address = 'fromアドレス'
to_address = 'toアドレス'

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('smtpサーバー.jp')
smtp.sendmail(from_address, to_address, msg.as_string())
smtp.close()

ね、簡単でしょ?

あえて、ポイントを挙げるとすれば、

import smtplib

これで、smtp送信するライブラリをimportしてることですかね。

あとは、

from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate

で、メール送信に必要な関数をimportしてます。

続いて、メール情報を宣言。

from_address = 'fromアドレス' //相手側に表示されるfromアドレスを指定します。
to_address = 'toアドレス' //送り先のアドレスを指定します。

charset = 'ISO-2022-JP' //日本語を送信したいので固定で。
subject = u'件名' //件名です。
text    = u'本文です。' //本文です。

fromアドレスは、適当でも良いですが、
受け取り側でfromアドレスと送信元smtpサーバーとの検証をしていると弾かれる可能性があるので、なるべく使用しているメールアドレス、少なくともドメインは送信に使っているsmtpサーバーのものにしましょう。

実際にメッセージ情報を作成していきます。

msg = MIMEText(text.encode(charset), 'plain', charset)  //本文と一緒にmsgオブジェクトを生成します。
msg['Subject'] = Header(subject, charset) //件名をセットします。
msg['From'] = from_address //fromアドレスの設定。
msg['To'] = to_address //toアドレスの設定。
msg['Date'] = formatdate(localtime=True) //Dateの設定。

最後にメール送信を実施します。

smtp = smtplib.SMTP('smtpサーバー.jp') //smtpサーバーを指定して、送信用のオブジェクトを生成します。
smtp.sendmail(from_address, to_address, msg.as_string()) //sendmail関数でメール送信を実行します。
smtp.close() //送信コネクションをクローズして完了

あとは、ターミナルなどからコマンド実行すれば良いのですが、それだと実用的ではないので、
Macならshellスクリプト、Windowsならバッチファイルなどで実行用のファイルを用意します。
Macならcron、Windowsならタスクスケジューラなどで定期実行させることも可能です。

いやー、簡単ですね。助かる助かる。
ということで、ゴルフの話はまた今度。笑
お疲れ様でしたー!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です