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ファイルを実行するとエラー表示されずにメール送信できるようになっています。