Python プログラム

pythonを使用してGmailでhtml形式メールを自動送信する方法

良く使う機能でGmailをpythonで動かすことがある。

スクレイピングしたデータをまとめてGmailに添付して送ってしまうので、定期的に情報を通知したいときに使える。

スクレイピングしたURLなどをまとめておけば、楽に情報収集を行えます。

Gmailをpythonを使用して送る

個人的には、pandasでhtml出力をして、それをGmailに貼り付けるなどの使い方をしていたりする。
結構便利な機能なので覚えておくといい。

この動画が結構わかりやすいですね。

pandasでhtml出力

pandasでhtml出力する方法はコチラ

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

-Python, プログラム