pythonを使用してGmailでhtml形式メールを自動送信する方法
良く使う機能でGmailをpythonで動かすことがある。
スクレイピングしたデータをまとめてGmailに添付して送ってしまうので、定期的に情報を通知したいときに使える。
スクレイピングしたURLなどをまとめておけば、楽に情報収集を行えます。
Gmailをpythonを使用して送る
個人的には、pandasでhtml出力をして、それをGmailに貼り付けるなどの使い方をしていたりする。
結構便利な機能なので覚えておくといい。
この動画が結構わかりやすいですね。
pandasでhtml出力
pandasでhtml出力する方法はコチラ
pythonを使用してGmailでhtml形式メールを自動送信
下のコードhtml形式で出力されたファイルをGmail本文に挿入して、メールを送るプログラムです。
import smtplib import email.message FROM_ADDRESS = 'Gmailのアカウントメールアドレス' MY_PASSWORD = 'Gmailのパスワード' #送り先のメールアドレス TO_ADDRESS = ['mailaddress@gmail.com' ] SUBJECT = '本日のメール' def create_message(from_addr, to_addr, subject, body): msg = email.message.Message() msg['Subject'] = subject msg['From'] = from_addr msg['To'] = ",".join(to_addr) msg.add_header('Content-Type','text/html') msg.set_payload(body) return msg def send(from_addr, to_addrs, msg): smtpobj = smtplib.SMTP('smtp.gmail.com', 587) smtpobj.ehlo() smtpobj.starttls() smtpobj.ehlo() smtpobj.login(FROM_ADDRESS, MY_PASSWORD) smtpobj.sendmail(from_addr, to_addrs, msg.as_string()) smtpobj.close() def main(): to_addr = TO_ADDRESS subject = SUBJECT #htmlファイルを読み込み。メール本文に挿入 test_data = open('demo.html', "r",encoding='utf-8_sig') contents = test_data.read() body = contents msg = create_message(FROM_ADDRESS, to_addr, subject, body) send(FROM_ADDRESS, to_addr, msg) if __name__ == '__main__': main()
そうすると、よくメルマガで送られてくるのような画像付きメールを送ることができます。マジ使えます。。。。
自身では、Windiwsでbatファイルを作成してpythonを実行して、メールを毎日送るように設定しています。