2011-06-15 110 views
9

这可能是一个重复的问题,但我仍然面临着这个问题,希望有一个解决方案。提前致谢。服务器不支持STARTTLS扩展

我想

我目前使用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('[email protected]', 'abc123') 
addressbook=sys.argv[1] 
+0

请发表您的邮件发送代码的片段。也许它只是删除“server.starttls()”,但很难告诉没有代码 – Gryphius 2011-06-15 09:18:21

回答

0

错误说明了这一切,似乎是SMT P服务器正在使用不支持STARTTLS,你aru发行server.starttls()。尝试使用服务器而不致电server.starttls()

没有更多信息是唯一可以说的。

+0

谢谢ferran,我试过不使用server.starttls(),它似乎没有工作以及返回错误列表。 – XXX 2011-06-15 09:26:06

0

您确定要加密(StartTLS)到邮件服务器的连接吗?我会联系知道该服务器内部的人员,查看要使用的协议/加密。

你说在取消对server.starttls()的呼叫时,会得到一系列不同的错误消息。你能不能发布这些消息?

另外,您可能需要阅读StartTLS,以便了解它是什么以及为什么要使用它。看起来你正在写一个严肃的商业程序,在这种情况下,你可能想要明白你在做什么,安全明智。

6

starttls()之前删除ehlo()

starttls() + ehlo()会导致两个HELLO消息,这会导致服务器删除回复消息中的STARTTLS

server = smtplib.SMTP('smtp.abc.com', 587) 
server.starttls() 
server.ehlo() 
server.login('[email protected]', 'abc123') 
+0

这不适用于雅虎。雅虎只有在我删除'startTLS'时才能工作。但我需要TLS来确保密码不被嗅探器捕获。 – Ajoy 2013-03-12 04:36:06

3

去除server.ehlo()server.starttls()之前帮我把我的代码工作!谢谢,伦纳德! 我的代码:

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() 
-3

是把server.starttls()上述server.ehlo()解决了这个。

1

我能够用下面的代码来解决问题,通过添加端口号与服务器名称:

server = smtplib.SMTP('smtp.abc.com:587')