Gmail APIを使ってPythonでメール送信する

Pythonを用いてメール送信したかったのだが, 適当なメールアドレスがなかったため, 使い慣れているGmailを使用することにした.

検索すると, Googleアカウントのセキュリティを下げれば使用可能な方法はよく出てくるのだが, 2段階認証等を設定しているとセキュリティを下げることができないらしい.

また, セキュリティを下げること自体もいかがなものかと思ったため, Gmail APIを利用する方法を調べた.

基本的には, メイン参照元 (Gmail APIとPythonを使ってメール送信を自動化する方法 – Valmore) のほぼそのままである.

ただし, 本方法だと, Googleによるアプリ検証まではできていないため, 送信できたメールに注意喚起のメッセージがでてしまうことが難点. 要改善, もしくはアプリ検証を実施する必要がある.

 

Git

Github

 

Requirement

  • OS: Mac, Windows

  • python3

    • import pickle
    • import os.path
    • from googleapiclient.discovery import build
    • from google_auth_oauthlib.flow import InstalledAppFlow
    • from google.auth.transport.requests import Request
    • import base64
    • from email.mime.text import MIMEText
    • from apiclient import errors
    • import json

 

Install Gmail Libraries

 

Tested Environment

  • Mac

    • macOS Big Sur 11.5.2 on M1 MacBook Air 2020

 

Usage

 

 

Codes

ディレクトリ構成

実行前

 

実行後

 

main.py

 

settings.json

メールの設定, 行き先, 本文など

 

credential.json

トークン作成前の認証情報

 

手順

Google Cloud Platformにアクセス

Screen Shot 2021-09-15 at 4.13.30

 

  • 同意して実行

Screen Shot 2021-09-15 at 4.13.43

 

Gmail APIを有効にする

  • Gmail APIをタイプして選択

Screen Shot 2021-09-15 at 4.14.03

 

  • 有効にするを押す

Screen Shot 2021-09-15 at 4.14.24

 

Gmail APIの認証

  • 認証情報を作成を押す

Screen Shot 2021-09-15 at 4.15.18

 

  • Gmail APIを選択して, 次へ

Screen Shot 2021-09-15 at 4.15.38

 

  • アプリ名をタイプし,
  • ユーザーサポートメールに自分のメールアドレスをタイプ

Screen Shot 2021-09-15 at 4.16.12

 

  • デベロッパーの連絡先情報のメールアドレスに自分のメールアドレスをタイプ

Screen Shot 2021-09-15 at 4.16.39

 

  • 保存して次へ

Screen Shot 2021-09-15 at 4.23.13

 

  • デスクトップアプリを選択して作成を押す

Screen Shot 2021-09-15 at 4.23.36

 

  • 認証情報の入ったjsonをダウンロード

Screen Shot 2021-09-15 at 4.23.51

 

Gmail APIアプリを公開

  • DLした認証情報jsonをコピー

Screen Shot 2021-09-15 at 4.24.11

 

  • main.pyと同じディレクトリにいれて, credential.jsonにファイル名を変更

Screen Shot 2021-09-15 at 4.24.28

 

  • OAuth同意画面を押す

Screen Shot 2021-09-15 at 4.25.30

 

  • アプリを公開を押す

Screen Shot 2021-09-15 at 4.25.46

 

  • 確認を押す

Screen Shot 2021-09-15 at 4.25.53

 

  • これでGmail APIの今回のアプリが公開され利用可能になった

Screen Shot 2021-09-15 at 4.26.02

 

Gmail APIトークンの作成とメール送信

  • python3 main.py でpythonを実行

Screen Shot 2021-09-15 at 4.26.18

 

  • 自分のアカウントを選択

Screen Shot 2021-09-15 at 4.26.25

 

  • 詳細を押す

Screen Shot 2021-09-15 at 4.26.35

 

  • GmailSendTest (安全ではないページ) に移動をクリック

Screen Shot 2021-09-15 at 4.26.52

 

  • チェックを入れる

Screen Shot 2021-09-15 at 4.27.10

 

  • Continueを押す

Screen Shot 2021-09-15 at 4.27.15

 

  • トークンが作成され, メールも送信された

Screen Shot 2021-09-15 at 4.27.23

 

  • メール確認

Screen Shot 2021-09-15 at 4.30.07

 

  • セキュリティ通知

Screen Shot 2021-09-15 at 4.30.26

 

  • メールが届いている

Screen Shot 2021-09-15 at 4.30.32

 

  • トークンファイル (token.pickle) ができている. 今後はこのトークンを使う

Screen Shot 2021-09-15 at 4.31.34

 

トークンを利用してメール送信

  • 試しにもう一回main.pyを実行

Screen Shot 2021-09-15 at 4.31.51

 

  • 認証を求められることなく, メールを送ることができた

Screen Shot 2021-09-15 at 4.32.02

 

以上.

動画

 

参照