本記事の対象者
- GCPでサービスを作り、メールを送信する仕組みを無料で作りたい人。(サービスのホスティングが無料ではなく、メール送信部分だけ)
目的
sendgridなどの外部のサービスを使わずに、pythonを使ってgmailを送信する。
必要なもの
- Gmail または、Google workspaceのアカウント (Google workspaceは管理者権限が必要)
- pythonを動かす環境
メールの設定
送信者の設定
設定から二段階認証を有効にする
メールを選択し、「その他」を選び、「〇〇用」などとラベルを決める
「生成」ボタンを押すと、パスワードが表示される(再表示は不可能)ので、パスワードをメモする。
Google workspaceの設定
管理画面からアプリを選択
設定項目を下記のように入力(名前は利用内容を書いてください)して保存
pythonでの処理
import smtplib
from email.mime.text import MIMEText
message = "メール本文"
msg = MIMEText(message, "html")
msg["Subject"] = "メール表題"
# 587はポート番号
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
(250, b'smtp.gmail.com at your service, [27.82.28.239]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8')
smtpobj.starttls()
(220, b'2.0.0 Ready to start TLS')
smtpobj.ehlo()
(250, b'smtp.gmail.com at your service, [27.82.28.239]\nSIZE 35882577\n8BITMIME\nAUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8')
smtpobj.login("送信設定したメールアドレス", "生成したアプリパスワード(メールのパスワードではない)")
(235, b'2.7.0 Accepted')
# 送信実施
smtpobj.sendmail("送信設定したメールアドレス(from)", "送信するメールアドレス(to)", msg.as_string())