127

我正在尝试通过 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')

这似乎是登录的问题。我确信我的登录详细信息是正确的,除了一件事。用户名应该是“blah@gmail.com”还是简单的“blah”?我都试过了,同样的错误。

知道有什么问题吗?

注意:所有句点都不是密码/电子邮件/文件路径/等。

4

9 回答 9

274

我遇到了类似的问题并偶然发现了这个问题。我收到 SMTP 身份验证错误,但我的用户名/密码正确。这是修复它的方法。我读到这个:

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

简而言之,谷歌不允许你通过 smtplib 登录,因为它已将这种登录标记为“不太安全”,所以你要做的就是在你登录到你的谷歌帐户时转到这个链接,并允许访问:

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

一旦设置好(参见下面的屏幕截图),它应该可以工作。

不太安全的应用程序

登录现在有效:

smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login('me@gmail.com', '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”链接。根据用户体验,更改可能需要一个小时才能生效。然后再次尝试登录过程。

更新:: 在这里查看我的答案: 如何使用 Python 以 Gmail 作为提供商发送电子邮件?

于 2014-12-16T23:31:14.450 回答
43

我遇到过同样的问题。身份验证错误可能是由于您的安全设置,例如两步验证。它不会允许第三方应用程序覆盖身份验证。

登录到您的 Google 帐户,然后使用以下链接:

第一步【禁用两步验证链接】:

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

第 2 步:[允许不太安全的应用程序的链接]

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

现在应该一切都好。

于 2018-02-12T20:58:45.403 回答
22

如果您使用的是smtp.gmail.com,那么您必须执行以下操作:

  1. 打开不太安全的应用程序

  2. 你会在你的 gmail 收件箱中收到安全邮件,点击“是的,是我”。

  3. 现在再次运行您的代码。

于 2019-11-20T05:11:32.557 回答
10

我有同样的问题。我通过在 Mac 上为电子邮件应用程序创建应用程序密码来修复它。您可以在我的帐户 -> 安全 -> 登录 Google -> 应用密码中找到它。下面是它的链接。 https://myaccount.google.com/apppasswords?utm_source=google-account&utm_medium=web

于 2019-02-11T07:17:31.920 回答
7

如果您收到此错误(535,b'5.7.8 用户名和密码不被接受。了解更多信息:\n5.7.8 https://support.google.com/mail/?p=BadCredentials o60sm2132303pje.21 - gsmtp')

然后只需进入安全部分的谷歌帐户设置并创建一个不太安全的帐户并打开不太安全的按钮

于 2019-09-27T07:20:06.537 回答
5

如果您开启两步验证,您需要生成一个特殊的应用密码,而不是使用您的通用密码。 https://myaccount.google.com/security#signin

于 2017-03-18T13:54:15.810 回答
4

我有同样的问题,我通过允许“不太安全的应用程序访问”解决了这个问题。这可以在 Google 帐户的安全选项卡中找到:在此处输入图像描述

于 2021-11-18T21:36:38.307 回答
0

就我而言,我允许访问,但问题是我使用的是server.login('Name <email>', password). 请确保在此处仅使用您的电子邮件:server.login('youremail@gmail.com', password).

更改后的响应:

(235, '2.7.0 Accepted')

之前的回应:

smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials 130sm13119106qkh.99 - gsmtp')
于 2021-10-07T04:57:26.473 回答
-1

尝试打开不太安全的应用程序并确保您有 smtp.gmail.com 或进行其他搜索

于 2021-05-24T19:14:26.053 回答