Pythonでメール(gmail)を送信できない場合の解決法

エラーが表示される

https://qiita.com/okhrn/items/630a87ce1a44778bbeb1

を参考にしましたが、

 

smtplib.SMTPAuthenticationError: (535, ‘5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials

というエラーが表示されたり、「重大なセキュリティ通知」という件名のメールが届いたりして送信できていませんでした。

 

エラーに記述されているURLを見たところ

引用:メール クライアントにログインできない場合

とあります。

 

解決策

これを踏まえて、解決策は以下の2通りあります。

 

  • アプリパスワードを使用する場合(推奨)
  • 安全性の低いアプリを許可する場合

セキュリティ的に前者が推奨されます。

 

アプリパスワードを使用する場合

アプリパスワードとは、今回のPythonによるメールの送信のように、アプリが使用するためだけのパスワードで、googleアカウントのパスワードとは別のものとなります。

アプリパスワードを作るには2段階認証を設定する必要があります。

手順1:googleアカウントにログインした後

https://myaccount.google.com/security

を開きます。

手順2:「2段階認証プロセス」の設定

「2段階認証プロセス」をクリックします。

以降は表示に従って進めていきます。

設定が終わったら、「2段階認証プロセス」がオフからオンになっているか確認します。

手順3:「アプリパスワード」の生成

「アプリパスワード」をクリックします。

 

①「アプリを選択」のプルダウンで「メール」を

②「デバイス選択」のプルダウンで各自使用しているデバイスを選択します。

※適当に選択しても使えますが、自分がどのパスワードを使っているか判別するために、適切に設定してあげます。

③「生成ボタン」が押せるようになるのでクリック

生成されたパスワードが表示されるので、そのパスワードでもって、Pythonファイルを実行するとメール送信できます。

 

安全性の低いアプリを許可する場合

こちらは、手順が短く済みますが、googleアカウントのパスワードと同じものをPythonファイルに記述することになるので、パスワードが盗難された場合のリスクが高まります。できれば、前者のアプリパスワードを使うようにしましょう。

手順1:googleアカウントにログインした後

https://myaccount.google.com/security

を開きます。

手順2:「安全性の低いアプリのアクセス」からアクセスを有効にします

数分後には、Pythonファイルを実行するとエラー表示されずにメール送信できるようになっています。

 

 


Warning: getimagesize(https://www.gocca.work/wp-content/uploads/2019/04/アプリパスワード2-1-368x234.png): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/kusanagi/www.gocca.work/DocumentRoot/wp-content/themes/godios/inc/schema-org.php on line 51