【问题标题】:Error sending email: raise SMTPAuthenticationError(code, resp)发送电子邮件时出错:引发 SMTPAuthenticationError(code, resp)
【发布时间】:2015-06-03 19:11:40
【问题描述】:

我尝试使用 smtp 模块发送电子邮件,但出现错误:

File "/usr/lib/python2.7/smtplib.py", in login    
 raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (534, '5.7.14)...

有人已经有这个错误了吗?你知道怎么解决吗?

代码:

def sendNotification():
    recepients_list = "emailsmtplibtest@gmail.com"
    subject = 'Subject'
    message = "Message" 
    sendemail(recepients_list,subject,message)

def sendemail(to_addr_list, subject, message):
    username = 'emailsmtplibtest@gmail.com'
    password = 'passtest'   
    from_addr = 'emailsmtplibtest@gmail.com'    
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login(username,password)
    newmessage = '\r\n'.join([
              'To: %s' %recepient_list,
               'From: %s' % from_addr,
                'Subject: %s' %subject,
                '',
                message
                ])
    try:    
        server.sendemail(from_addr, to_addr_list,newmessage)
        print 'notification sent'
    except:
        print 'error sending notification'
    server.quit()


sendNotification()

【问题讨论】:

  • 如果我不得不猜测,那将是某种 TLS/SSL 问题。你走这条路了吗?
  • 您可以尝试禁用 CAPTCHA 或在您的 gmail 帐户中注册应用程序专用密码:joequery.me/guides/python-smtp-authenticationerror
  • 感谢您的提示,但仍然无效!
  • 我认为这不会导致您报告的特定错误,但您的代码中存在拼写错误。我认为您应该调用 server.sendmail(),而不是 server.sendemail()(注意“邮件”之前的“e”)。另一方面,我只是尝试使用 smtplib 通过 gmail 发送邮件,其步骤与您列出的步骤基本相同,它对我有用。我仍然认为问题出在您的 Google 帐户的安全设置上。

标签: python email gmail smtplib smtp-auth


【解决方案1】:

没有一个安全性较低的选项对我有用。最终起作用的是设置 2 因素身份验证,然后生成特定于应用程序的密码。此处说明:https://support.google.com/domains/answer/9437157

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题。是的,它奏效了。通过启用您的 gmail 帐户安全设置 -> 允许不太安全的应用程序,我能够发送一封简单的电子邮件 从一个 gmail 到另一个 gmail 帐户。

    警告: google 不建议为访问您的 Google 帐户的应用设置低安全性。这可能是一个安全威胁。实验后将其关闭。

    【讨论】:

      【解决方案3】:

      (534, b'5.7.14 请通过网络浏览器登录,\n5.7.14 然后重试。\n5.7.14 了解详情\n5.7.14 https://support.google.com/mail/answer/78754 h16sm7090987wrc.89 - gsmtp')

      试试 https://myaccount.google.com/security#connectedapps

      允许安全性较低的应用:开启 某些应用程序和设备使用安全性较低的登录技术,这可能会使您的帐户容易受到攻击。您可以关闭这些应用的访问权限(我们建议这样做)或选择不顾风险使用它们。

      【讨论】:

        【解决方案4】:

        转到 Google 的帐户安全设置: www.google.com/settings/security

        找到“访问不太安全的应用程序”字段。 将其设置为“允许”。

        再次尝试您的脚本,将 server.sendemail() 更改为 server.sendmail()

        【讨论】:

        • 即使启用了安全性较低的设备,我也无法登录。我的密码是正确的,并且我使用的代码与网站中提到的相同
        • @proprius 对我来说也一样。你弄明白了吗?
        • 使用此链接直接将您带到所需页面:https://www.google.com/settings/security/lesssecureapps
        • @Anupam 对我来说也一样。你弄明白了吗?
        • @NityeshAgarwal 如果我没记错的话,我发现即使我启用它,它也会自动将其设置为禁用。我想我只是尝试了几次,它成功了
        猜你喜欢
        • 1970-01-01
        • 2013-07-14
        • 2012-01-16
        • 1970-01-01
        相关资源
        最近更新 更多