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を実行して、メールを毎日送るように設定しています。