这可能是一个重复的问题,但我仍然面临着这个问题,希望有一个解决方案。提前谢谢。
我正在尝试通过公司的服务器发送邮件
我目前正在使用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]
答案 0 :(得分:7)
删除ehlo()
之前的starttls()
。
starttls() + ehlo()
会产生两条HELLO消息,导致服务器删除回复消息中的STARTTLS
。
server = smtplib.SMTP('smtp.abc.com', 587)
server.starttls()
server.ehlo()
server.login('sales@abc.com', 'abc123')
答案 1 :(得分: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()
答案 2 :(得分:3)
我尝试通过公司的服务器发送邮件时遇到类似的问题(无需验证)
我解决了删除server.ehlo
和端口号的问题:
server = smtplib.SMTP("smtp.mycompany.com")
server.sendmail(fromaddr, toaddr, text)
答案 3 :(得分:2)
我可以通过添加服务器名称的端口号来解决以下代码的问题:
server = smtplib.SMTP('smtp.abc.com:587')
答案 4 :(得分:1)
错误说明了一切,似乎SMTP服务器正在使用不支持STARTTLS并且你aru发布server.starttls()
。尝试使用服务器而不调用server.starttls()
。
没有更多信息是我唯一可以说的。
答案 5 :(得分:1)
from smtplib import SMTP_SSL, SMTP, SMTPAuthenticationError
from ssl import create_default_context
from email.message import EmailMessage
sender = 'aaa@bbb.com'
description = "This is the test description supposed to be in body of the email."
msg = EmailMessage()
msg.set_content(description)
msg['Subject'] = 'This is a test title'
msg['From'] = f"Python SMTP <{sender}>"
msg['To'] = 'bbb@ccc.com'
def using_ssl():
try:
server = SMTP_SSL(host='smtp.gmail.com', port=465, context=create_default_context())
server.login(sender, password)
server.send_message(msg=msg)
server.quit()
server.close()
except SMTPAuthenticationError:
print('Login Failed')
def using_tls():
try:
server = SMTP(host='smtp.gmail.com', port=587)
server.starttls(context=create_default_context())
server.ehlo()
server.login(sender, password)
server.send_message(msg=msg)
server.quit()
server.close()
except SMTPAuthenticationError:
print('Login Failed')
答案 6 :(得分:0)
您确定要加密(StartTLS)与邮件服务器的连接吗?我会联系知道该服务器内部的人,看看要使用的协议/加密。
您说在删除对server.starttls()
的调用后,您会收到一系列不同的错误消息。你也可以发布这些消息吗?
此外,您可能希望阅读StartTLS,以便了解它是什么以及为什么要使用它。看来你正在写一个严肃的商业计划,在这种情况下,你可能想要了解你在做什么,安全方面。
答案 7 :(得分:-3)
是的,将server.starttls()
置于server.ehlo()
之上解决了这个问题。