web-dev-qa-db-ja.com

ログイン資格情報がGmail SMTPで機能しない

Gmailを介してPythonでメールを送信しようとしています。ここに私のコードがあります:

import smtplib


fromaddr = '......................'  
toaddrs  = '......................'  
msg = 'Spam email Test'  

username = '.......'  
password = '.......'

server = smtplib.SMTP('smtp.gmail.com', 587)  
server.ehlo()
server.starttls()
server.login(username, password)  
server.sendmail(fromaddr, toaddrs, msg)  
server.quit()

エラーが表示されます:

Traceback (most recent call last):
  File "email_send.py", line 18, in <module>
    server.login(username, password)
  File "C:\.....\Python\lib\smtplib.py", line 633
, in login
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepte
d. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=1425
7\n5.7.8 {BADCREDENTIALS} s10sm9426107qam.7 - gsmtp')

これはログインに関する問題のようです。 1つのことを除いて、ログイン情報が正しいことは確かです。ユーザー名は「[email protected]」ですか、それとも単に「blah」ですか?同じエラーを両方試しました。

何が間違っているのでしょうか?

注:すべてのピリオドは、パスワード/メール/ファイルパス/などではありません。

21
Jacob Kudria

私は同様の問題に遭遇し、この質問につまずいた。 SMTP認証エラーが発生しましたが、ユーザー名/パスが正しいです。これが修正されたものです。私はこれを読みました:

https://support.google.com/accounts/answer/6010255

一言で言えば、Googleはこの種のログインを「安全性が低い」としてフラグを立てているため、smtplibを介してログインすることを許可していません。アクセスを許可します。

https://www.google.com/settings/security/lesssecureapps

それが設定されると(以下のスクリーンショットを参照)、動作するはずです。

Less Secure Apps

ログインが機能するようになりました:

smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login('[email protected]', 'me_pass')

変更後の対応:

(235, '2.7.0 Accepted')

応答前:

smtplib.SMTPAuthenticationError: (535, '5.7.8 Username and Password not accepted. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 g66sm2224117qgf.37 - gsmtp')

まだ動作しませんか?まだSMTPAuthenticationErrorを受け取りますが、コードが534になっている場合、場所が不明であるためです。このリンクに従ってください:

https://accounts.google.com/DisplayUnlockCaptcha

[続行]をクリックすると、新しいアプリの登録に10分かかります。したがって、今度は別のログイン試行に進み、それが機能するはずです。

smptlibにこのエラーが表示されると、しばらく動かなくなることがあります。

235 == 'Authentication successful'
503 == 'Error: already authenticated'

メッセージは、ブラウザーを使用してサインインすることを示しています。

SMTPAuthenticationError: (534, '5.7.9 Please log in with your web browser and then try again. Learn more at\n5.7.9 https://support.google.com/mail/bin/answer.py?answer=78754 qo11sm4014232igb.17 - gsmtp')

「lesssecureapps」を有効にした後、コーヒーを飲みに戻って、「DisplayUnlockCaptcha」リンクをもう一度試してください。ユーザーエクスペリエンスから、変更が反映されるまで最大1時間かかる場合があります。その後、サインインプロセスを再試行してください。

[〜#〜] update [〜#〜]::ここで私の答えを参照してください: Gmailをプロバイダーとして使用してメールを送信する方法Python?

54
radtek

同じ問題がありました。認証エラーは、セキュリティ設定、たとえば2段階認証が原因である可能性があります。サードパーティのアプリが認証をオーバーライドすることはできません。

Googleアカウントにログインし、次のリンクを使用します:

ステップ1 [2段階認証プロセスを無効にするリンク]:

https://myaccount.google.com/security?utm_source=OGB&utm_medium=act#signin

ステップ2:[安全性の低いアプリを許可するためのリンク]

https://myaccount.google.com/u/1/lesssecureapps?pli=1&pageId=none

これですべてうまくいくはずです。

9
Rahul Shenoy

2段階認証プロセスを有効にする場合は、共通のパスワードを使用する代わりに、特別なアプリパスワードを生成する必要があります。 https://myaccount.google.com/security#signin

2
northcamel

同じ問題がありました。そして、Macでメールアプリケーションのアプリパスワードを作成することで修正します。アカウントで見つけることができます->セキュリティ-> Googleへのサインイン->アプリのパスワード。以下はそのためのリンクです。 https://myaccount.google.com/apppasswords?utm_source=google-account&utm_medium=web

1
Leo_Liu_MJ