【问题标题】:SMTPException: STARTTLS extension not supported by serverSMTPException:服务器不支持 STARTTLS 扩展
【发布时间】:2017-12-19 09:21:47
【问题描述】:

我正在尝试使用 python smtplib 模块发送邮件,但出现错误。

import smtplib
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.login("xxxxxxxx@gmail.com", "yyyyyyy")
message = "Message_you_need_to_send"
s.sendmail("xxxxxxxxx@gmail.com", "aaaaaaaaa@gmail.com", message)
s.quit()

我收到如下错误:

Traceback(最近一次调用最后一次):文件“/home/engineer/demo.py”, 第 52 行,在 s.starttls() 文件“/usr/lib/python2.7/smtplib.py”,第 637 行,在 starttls raise SMTPException("服务器不支持 STARTTLS 扩展。") SMTPException: 服务器不支持 STARTTLS 扩展。

【问题讨论】:

    标签: python


    【解决方案1】:

    我从另一个链接引用了解决方案。您可以尝试在s.starttls() 之前删除s.ehlo()

    我使用自己的 gmail 帐户测试了您的代码,看来该代码应该与 s.echlo() 一起使用。您可能想检查您的 gmail 安全设置,例如启用 不太安全的应用程序Let less secure apps use your account

    您还可以使用s.set_debuglevel(1) 启用调试

    import smtplib

    s = smtplib.SMTP('smtp.gmail.com', 587)

    s.set_debuglevel(1)

    s.ehlo()

    s.starttls()

    【讨论】:

    • 日志 1/2:发送:'ehlo [127.0.1.1]\r\n' 回复:'250-smtp.gmail.com 为您服务,[115.118.5.146]\r\n '回复:'250-SIZE 35882577\r\n' 回复:'250-8BITMIME\r\n' 回复:'250-ENHANCEDSTATUSCODES\r\n' 回复:'250-PIPELINING\r\n' 回复:'250 SMTPUTF8\r\n' 回复: retcode (250);消息:smtp.gmail.com 为您服务,[115.118.5.146] SIZE 35882577 8BITMIME ENHANCEDSTATUSCODES PIPELINING SMTPUTF8
    • 日志 2/2:回溯(最近一次调用最后一次):文件“/home/engineer/mail.py”,第 8 行,在 s.starttls() 文件“/usr/ lib/python2.7/smtplib.py",第 637 行,在 starttls 中引发 SMTPException("服务器不支持 STARTTLS 扩展。") SMTPException:服务器不支持 STARTTLS 扩展。
    • 您的 允许不太安全的应用程序。 在您的 gmail 设置中的状态如何?
    • 允许不太安全的应用:开启状态
    • 不需要,问题在于 Office 网络的防火墙权限
    【解决方案2】:

    就代码而言没有任何更改,最终发现,问题与足够的防火墙权限相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多