web-dev-qa-db-ja.com

Gmailとpythonを使用してメールを送信する際のSMTPAuthenticationError

gmailを使用してメールを送信しようとしてpythonエラーが発生した場合、このタイプの質問は既にこのサイトにありますが、私には役立ちません

gmail_user = "[email protected]"
gmail_pwd = "password"
TO = '[email protected]'
SUBJECT = "Testing sending using gmail"
TEXT = "Testing sending mail using gmail servers"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(gmail_user, gmail_pwd)
BODY = '\r\n'.join(['To: %s' % TO,
        'From: %s' % gmail_user,
        'Subject: %s' % SUBJECT,
        '', TEXT])

server.sendmail(gmail_user, [TO], BODY)
print ('email sent')

エラー:

    server.login(gmail_user, gmail_pwd)
    File "/usr/lib/python3.4/smtplib.py", line 639, in login
   raise SMTPAuthenticationError(code, resp)
   smtplib.SMTPAuthenticationError: (534, b'5.7.14   
   <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtl1\n5.7.14       Li2yir27TqbRfvc02CzPqZoCqope_OQbulDzFqL-msIfsxObCTQ7TpWnbxIoAaQoPuL9ge\n5.7.14 BUgbiOqhTEPqJfb02d_L6rrdduHSxv26s_Ztg_JYYavkrqgs85IT1xZYwtbWIRE8OIvQKf\n5.7.14 xxtT7ENlZTS0Xyqnc1u4_MOrBVW8pgyNyeEgKKnKNyxce76JrsdnE1JgSQzr3pr47bL-kC\n5.7.14 XifnWXg> Please log in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 fl15sm17237099pdb.92 - gsmtp')    
59
mans

コードは正しいようです。ブラウザからログインしてみてください。アカウントにアクセスできる場合は、戻ってコードを再試行してください。ユーザー名とパスワードが正しく入力されていることを確認してください

編集:Googleは、最新のセキュリティ標準を使用していないアプリからのサインイン試行をブロックします(サポートで言及されている page )。ただし、以下のリンクにアクセスして、この安全機能をオン/オフにできます。

このリンクに移動して、オンにするを選択します
https://www.google.com/settings/security/lesssecureapps

102
aaveg

コードは正しいように見えますが、通常とは異なる場所からメールを送信しようとするとgoogleがIPをブロックするため、次のリンクでブロックを解除できます

https://support.google.com/accounts/answer/600956 でaccounts.google.com/DisplayUnlockCaptchaをクリックしました。

8
taz

PythonでGmailを使用してメールを送信しました。 smtplib.SMTP_SSLを使用して接続を試行してください。また、Gmailドメインとポートを変更しようとする場合があります。

だから、あなたはチャンスを得るかもしれません:

server = smtplib.SMTP_SSL('smtp.googlemail.com', 465)
server.login(gmail_user, password)
server.sendmail(gmail_user, TO, BODY)

プラスとして、メールの組み込みモジュールを確認できます。このようにして、コードの可読性を向上させ、電子メールヘッダーを簡単に処理できます。

3
ppalacios