何かしら動かしてるプログラムからのトリガー発生時、Gmailへ送信する。
2022年5月30日以降「安全性の低いアプリ」とされるメールクライアントでGmailのPOP受信・SMTP送信は出来なくなりました。
ThunderbirdではOAuthでなければエラーがでます。Pythonでもsmtplibでは送信できなくなりました。
それ以降Gmail APIを使っています。
当時のGoogle Cloudのスクリーンショットが見当たらない為、文字で割愛させてください。
*注 Gmailのアクセストークンは7日しか有効ではありません。
7日後は 'invalid_grant: Token has been expired or revoked.', {'error': 'invalid_grant', 'error_description': 'Token has been expired or revoked.'} が発生します。
例外処理はSeleniumなどで潰してください。
Google Cloud
API とサービスから
OAuth 2.0 クライアント ID 種類
デスクトップアプリ
OAuth 同意画面
アプリ名 適当
ユーザーサポート 自身のGmail
デベロッパーの連絡先情報 自身のGmail
Gmail のスコープ ../auth/gmail.modify
テストユーザー 自身のGmailでも
認証情報→OAuth 2.0 クライアント ID
操作からダウンロードを押します。
client_secret_**************************.apps.googleusercontent.com.json
というのがダウンロードされたと思うのでcredentials.jsonとでもリネームしてください。
初回時はコンソールに認証URLが出るので、Microsoft Edgeで認証してください。
自分の環境だとChromeの場合、エラーが発生しました。もう一度お試しください。がでて認証出来ませんでした。
このような画面が表示されます。
続行を押します。
引き続き続行を押します。
最後に The authentication flow has completed. You may close this window. が表示されたら完了です。