服务器不支持STARTTLS扩展

24 投票
9 回答
71491 浏览
提问于 2025-04-16 19:36

这可能是个重复的问题,但我还是遇到了麻烦,希望能找到解决办法。提前谢谢大家。

我正在尝试通过公司的服务器发送邮件。

我现在使用的是Python 2.6版本和Ubuntu 10.04系统。

这是我收到的错误信息:

Traceback (most recent call last):

  File "hxmass-mail-edit.py", line 227, in <module>
    server.starttls()

  File "/usr/lib/python2.6/smtplib.py", line 611, in starttls
    raise SMTPException("STARTTLS extension not supported by server.") smtplib.SMTPException: STARTTLS extension not supported by server.

下面是代码的一部分:

server = smtplib.SMTP('smtp.abc.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.ehlo()
server.login('sales@abc.com', 'abc123')
addressbook=sys.argv[1]

9 个回答

6

在调用 server.starttls() 之前去掉 server.ehlo() 让我代码正常运行了!谢谢你,Leonard!

我的代码:

s = smtplib.SMTP("smtp.gmail.com",587)
s.starttls()
s.ehlo
try:
    s.login(gmail_user, gmail_psw)
except SMTPAuthenticationError:
    print 'SMTPAuthenticationError'
s.sendmail(gmail_user, to, msg.as_string())
s.quit()
11

我之前也遇到过类似的问题,想通过公司的服务器发送邮件(不需要认证)

我解决这个问题的方法是去掉了 server.ehlo 这一行,并且去掉了端口号:

server = smtplib.SMTP("smtp.mycompany.com")
server.sendmail(fromaddr, toaddr, text)
14

在调用 starttls() 之前,先把 ehlo() 去掉。

如果你把 starttls()ehlo() 一起用,就会发出两个“你好”的消息,这样服务器会把回复消息中的 STARTTLS 去掉。

server = smtplib.SMTP('smtp.abc.com', 587)
server.starttls()
server.ehlo()
server.login('sales@abc.com', 'abc123')

撰写回答