こんにちは、pythonを使用してGmailを送信することがある方へSMTPAuthenticationError
Username and Password not accepted
が出ていませんか?
僕は最近急に上記エラーが出るようになりました。(2022年6月時点)
というのも、プログラムからGmailを送信する際はGoogleアカウントのセキュリティ設定からアプリから使用する許可を付与するのですが。この許可の方法についてはいくつかあります。
今回対象となるのは、安全性の低いアプリのアクセスを許可してプログラムからGmailを使用できるように設定している方になります。
この設定は特段アプリごとのパスワードの発行等を行わずに外部プログラムからユーザーIDとログインPASSのみでGmailを使用することができるのでサクッと設定できて便利なメリットがあります。(ただし、あまりセキュリティ的には良くない...)
ただ、この安全性の低いアプリのアクセスの許可設定は2022年5月30日を持って廃止となりました。
...ということでこれまで上記の設定でGmailをプログラムから使用していた場合、SMTPAuthenticationError
となるようになりました。
SMTPAuthenticationErrorの解決方法は?
アプリパスワードを設定しましょう。
アプリパスワードの設定はGoogleアカウント設定のセキュリティから行います。
(その前に事前に2段階認証プロセスをONにしておく必要があります)
アプリとデバイスは特段意識する必要はないですが、後々区別できるように分かりやすい設定を行っておきます。
上記設定が終わると16桁のパスワードが発行されますので、このパスワードをプログラムから使用します
pythonの場合このような記述でメール設定の初期化を行います
smtp_host = 'smtp.gmail.com' # メールを送るSMTPサーバー
smtp_port = 587
username = "xxx@gmail.com"
password = "16桁のパスワード"
server = smtplib.SMTP(smtp_host, smtp_port)
server.login(username, password)
すると、SMTPAuthenticationError
が出ず、メール送信に成功しました。
Gmailのセキュリティ設定を安全性の低いアプリのアクセスの許可で対応している方は設定を見直してみましょう。
コメント
コメント一覧 (1件)
神
助かりました