【Python】Pythonを使ってGmailを送ろうとしたが、認証エラーが起こる場合の対処法

プログラミング

概要

Pythonを使えばGmailを送信できることが分かり早速試してみるも、認証できずにエラーが発生してしまいました。

認証するためにマイページから許可を選択するように記載があるものの、そのような記載もありません。

今回は、こういった場合に対処する方法についてまとめました。

問題

Pythonで”server.login(アカウント名, パスワード)”と入力するとGmail(Google)のアカウントにログインできるはずですが、エラーメッセージが返されてしまいました。

エラーメッセージは下記です。

SMTPAuthenticationError: (535, b’5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials jk4-20020a170903330400b001b8b1f6619asm4431677plb.75 – gsmtp’)

 

環境

  • パソコン:Macbook Air M1チップ

 

解決法

調べてみると、Gmailからマイページに遷移してセキュリティ→安全性の低いアプリを許可

とすることで外部アプリ、スクリプトからのGoogleアクセスを可能にすると記載がありますが、実際Googleアカウントにログインするとその項目はありません。

Googleのヘルプを見ると、

アカウントを安全に保つため、2022 年 5 月 30 日より、Google は、ユーザー名とパスワードのみで Google アカウントにログインするサードパーティ製のアプリとデバイスについてサポートを終了いたします。

と記載があります。

 そこで、自分のアカウントから

  • 2段階認証を有効化
  • アプリパスワードを発行

とする必要があります。

そして、発行したパスワードをコードの中に取り込む必要があります。

ここからは2段階認証のやり方について説明します。

Gmail(Google)にログインして、右上にある自分のアイコンをクリックすると下記のような画面がでるので、「アカウントを管理」をクリックします。

 

Googleアカウントを開いたら左側の画面にある「セキュリティ」をクリックします。

 

右側の画面をスクロールすると、「Googleにログインする方法」という画面が出てくるので、その中の「2段階認証プロセス」をクリックします。

 

開いたら下へスクロールして「使ってみる」をクリックします。

 

再度ログイン画面が表示されるので、パスワードを入力します。その後、下記の画面が表示されるので、次へをクリックします。

 

Googleから確認コードが届くので、入力して「次へ」をクリックします。

 

最後に「有効化する」をクリックして、2段階認証は完了です。

  

続いてアプリパスワードを設定します。

再度「Googleにログインする方法」から「2段階認証プロセス」をクリックします。

 

画面を下にスクロールすると「アプリパスワード」という画面が表示されるので、クリックします。

 

パスワードを生成するアプリをデバイスを選択します。使用しているデバイスに合わせて選択すればよいです。

 

「生成」をクリックするとアプリパスワードが表示されます。このパスワードをコピーして保存しておきます。

 

これで準備は整いました。

このパスワードを

server.login(アカウント名,パスワード)

のパスワードのところに入力して実行すれば、PythonからGmailにログインすることができます。

まとめ

今回紹介したGoogleの仕様変更は2022年5月と最近の出来事ですので、未だに対応できていないサイトは多いです。

Gmailに限らず、仕様変更により使用できなくなるコードも多いので、エラーが表示されたら都度アップデートをしていく必要があると思います。

今回の記事がそのような方の助けとなると嬉しいです。

コメント

タイトルとURLをコピーしました