ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python】pythonを使ってGmailを自動送信する

 プログラムで異常が起こった時の通知メールや定期的な通知メールを行う際に、自動的にメールを送信する機能があると何かと便利です。

 今回はそのような場面で使えそうなpythonを使ってGmailを自動送信する方法の備忘録になります。

 では始めます。


1:Gmailのセキュリティ設定を低くする
 pythonを使ってGmailを送信するためには、Googleアカウントのセキュリティを「低く」する必要があります。なので通知専用のGmailアドレスを取得するなどするのが良いかと思います。

 Googleアカウントのセキュリティを低くするためには、まず通知したいGmailを持つGoogleアカウントにログインをして「Googleアカウント」画面を開きます。そして左側にある「セキュリティ」の項目をクリックし、スクロールさせた先にある「安全性の低いアプリのアクセス」を「オン」にします。
f:id:rikoubou:20201215173126p:plain

 これでpythonを使ってGmailを送信できるようになります。


2:pythonGmailを送信するサンプル
 では実際にGmailを送信してみます。ソースコード中の「適宜書き換える」と書いてある部分はそれぞれ自分用に書き換えてください。

gmail_test.py

# -*- coding:utf-8 -*-
import smtplib, ssl
from email.mime.text import MIMEText
from datetime import datetime


# アカウント情報
gmail_account  = "XXXXXX@gmail.com" # Gmailアカウントアドレス(適宜書き換える)
gmail_password = "xxxxxxxxxxx"      # パスワード(適宜書き換える)

# context作成
context = ssl.create_default_context()

# Gmailにログイン
server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context)
server.login(gmail_account, gmail_password)

# 本文(htmlなので改行は<br>を使う)
body_str = "test" + "<br>"
body_str += "てすとですよ" + "<br><br>"
body_str += datetime.now().strftime("%Y/%m/%d %H:%M:%S") # 現在時刻も追加

# メールデータ(MIME)作成
msg = MIMEText(body_str, "html")
msg["Subject"] = "メールタイトル"     # メールタイトル
msg["To"]      = "yyyyyyy@gmail.com" # 送信先メールアドレス(適宜書き換える)
msg["From"]    = gmail_account       # 送信元メールアドレス

# メール送信
server.send_message(msg)

 実行してエラーが出なければメールが送られているので確認してみてください。


 以上がpythonを使ってGmailを自動送信する方法です。

 Googleアカウントのセキュリティを下げる必要はありますが、上手く使えば何かと便利だと思います。


・参考資料