使用gmail和python发送邮件时出现SMTPAuthenticationError

使用gmail和python发送邮件时出现SMTPAuthenticationError,python,smtplib,Python,Smtplib,当我尝试使用gmail和python发送邮件时,出现了错误,这种问题已经出现在这个网站上,但对我没有帮助 gmail_user = "me@gmail.com" gmail_pwd = "password" TO = 'friend@gmail.com' SUBJECT = "Testing sending using gmail" TEXT = "Testing sending mail using gmail servers" server = smtplib.SMTP('smtp.gmai

当我尝试使用gmail和python发送邮件时,出现了错误,这种问题已经出现在这个网站上,但对我没有帮助

gmail_user = "me@gmail.com"
gmail_pwd = "password"
TO = 'friend@gmail.com'
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')    
server.login(gmail\u用户,gmail\u pwd)
文件“/usr/lib/python3.4/smtplib.py”,第639行,登录
引发SMTPAuthenticationError(代码,resp)
smtplib.SMTPAuthenticationError:(534,b'5.7.14
请通过web浏览器登录,然后重试。\n5.7.14了解更多信息,请访问\n5.7.14https://support.google.com/mail/bin/answer.py?answer=78754 fl15sm17237099pdb.92-gsmtp')

您的代码看起来是正确的。尝试通过浏览器登录,如果您能够访问您的帐户,请返回并重试代码。 只需确保键入的用户名和密码正确即可

编辑: 谷歌阻止来自不使用现代安全标准(在其支持中提到)的应用程序的登录尝试。但是,您可以通过以下链接打开/关闭此安全功能:

转到此链接并选择打开

我刚刚通过Python发送了一封带有gmail的电子邮件。 尝试使用smtplib.SMTP\u SSL建立连接。此外,您可以尝试更改gmail域和端口

因此,您可能会有机会:

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

另外,您还可以检查电子邮件内置模块。通过这种方式,您可以提高代码的可读性,并轻松处理电子邮件标题。

您的代码看起来是正确的,但有时当您尝试从一个不寻常的位置发送电子邮件时,google会阻止IP。您可以尝试通过从IP访问并按照提示解除阻止


参考资料:

请描述解决方案的一些要点,因为该链接现在有效,但以后可能无法访问。如果它对其他人有帮助,即使在打开不太安全的应用程序并显示UnlockCaptcha后,我也会出现身份验证错误。经过一段时间的思考,我发现谷歌不太安全的应用程序设置正在自行关闭!我试着打开了几次,然后就成功了。当你打开这个功能时,一般来说,它会在一小时内反射,但有时需要24小时才能反射。在他们的控制台中提到了它。谢谢,我尝试在我的vps(我以前从未登录过的ip)上运行我的脚本,这个链接可以让我在新的ip上登录。即使在我打开lesssecureapps后,它仍然抱怨错误。您的解决方案来救我,非常感谢。请确保您单击打开,而不是关闭!因为这个简单的错误,我浪费了两个小时的时间:)嗨!我试着在我的谷歌商业账户中设置这个设置,但它说权限属于管理员,即使我是管理员@AnantGupta
谷歌应用程序用户注意:如果管理员锁定了不太安全的应用程序帐户访问权限,则此设置将隐藏。
您必须先在管理控制台中启用此设置,过一段时间后,您将能够允许
lessecureapps
启用此设置以解决问题。谢谢但是,代码中是否有任何更改使其更安全,以便google可以接受?@aaveg是否有方法在Python控制台中检查它是否是无效凭据或需要启用不太安全的应用程序?这无法解决问题。@smallches这是一个非常古老的答案。当然,谷歌已经改变了它的auth方法,也许Python已经做了一些事情来处理它。检查aaveg答案,该答案看起来有效。2020,效果非常好。作为服务器,您也可以使用smtp.gmail.com。看起来我无法为这个问题添加新的答案,下面的任何一个都不适合我。联系谷歌后,这就是解决方案