【问题标题】:Error Sending Email (Gmail) Via Python 2.6通过 Python 2.6 发送电子邮件 (Gmail) 时出错
【发布时间】:2013-12-16 04:33:03
【问题描述】:

这个问题让我困惑了一段时间。谁能看到我哪里出错了?此代码在 Python 2.7 中运行良好;但是,它在通过 cron (Python 2.6) 运行时会中断。

def send_email (message, status):
    fromaddr = 'sam@gmail.com'
    toaddrs = 'sam@gmail.com'
    server = SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login('username-example', 'password-example')
    server.sendmail(fromaddr, toaddrs, 'Subject: %s\r\n%s' % (status, message))
    server.quit()

send_email('message text','subject text')

通过 cron 它会产生这个错误:

Traceback (most recent call last):
  File "/home/user/weather-script.py", line 30, in <module>
    send_email('message text', 'subject text')
  File "/home/user/weather-script.py", line 11, in send_email
    server.login('username-example', 'password-example')
  File "/usr/lib64/python2.6/smtplib.py", line 589, in login
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (534, '5.7.14 <https://accounts.google.com    /ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsZn\n5.7.14 KZ5OF6iSxSCasonEce6H27TM-l4ithBaTtxpg8GbcEzJ522-_MUlYZJWIbc-ZwVnuslJOQ\n5.7.14 _Fu7bpO9-xOfqDi-eiSAPRw8_QLth-Z9ytfeWYIJi0Ez8F_p5joplfR7IoXw4V8VisI7pq\n5.7.14 8NTPoVFqvUEldEI5wL8AukhoPpVfDiX25557ky_W7N6UZLb3efGuvnbhrBsmg5gvlzj1DG\n5.7.14 1GchFIA> Please log in via your web browser and then try again.\n5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787\n5.7.14 54 xv2sm104667531pbb.39 - gsmtp')

感谢您的宝贵时间。任何帮助将不胜感激。

山姆。

【问题讨论】:

  • 您是否按照错误信息中的说明进行操作?
  • 感谢您的回复,Martijn Peters。我不明白提供的错误。我跟着链接:第一个要求我登录谷歌,我做到了。当 cron 再次运行时,我得到了同样的错误。第二个链接只是一个空白页。
  • @SamPerry 你能解决这个问题吗?我遇到了完全相同的问题
  • 啊,没关系,我发现了问题。 Gmail 出于安全原因阻止登录,并向我的辅助电子邮件地址发送了一封电子邮件,其中包含有关如何清除安全阻止的说明。
  • @sgarza62,试试下面我的答案。

标签: python email cron smtp gmail


【解决方案1】:

我终于让它工作了。原来我只需要添加几行:

server.ehlo()
server.starttls()
server.ehlo()

因此,最终的脚本如下:

def send_email (message, status):
    fromaddr = 'sam@gmail.com'
    toaddrs = 'sam@gmail.com'
    server = SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login('username-example', 'password-example')
    server.sendmail(fromaddr, toaddrs, 'Subject: %s\r\n%s' % (status, message))
    server.quit()

send_email('message text','subject text')

【讨论】:

  • 这个确切的错误和代码有同样的问题吗?你能解释一下 .ehlo() 方法还是你在哪里找到的?
猜你喜欢
  • 2016-06-03
  • 2014-01-04
  • 2016-09-09
  • 2017-09-09
  • 1970-01-01
  • 2012-01-07
  • 2023-03-19
相关资源
最近更新 更多