您好我正在尝试在发出异常时向自己发送电子邮件。但是我得到一个例外,我不知道如何解决。这是代码和异常。我已经尝试了所有的答案,但徒劳无功
import logging
import logging.handlers
import smtplib
s = smtplib.SMTP_SSL("smtp.gmail.com", 587)
s.login('xyz@gmail.com', 'myPassword')
s.starttls()
logger = logging.getLogger()
logger.addHandler(s)
try:
a = 2/0
except Exception as e:
logger.exception('Unhandled Exception')
s.sendmail('xyz@gmail.com', 'xyz@gmail.com', 'Hi')
s.close()
错误日志:
回溯(最近一次呼叫最后一次):文件" try.py",第5行,in s = smtplib.SMTP_SSL(" smtp.gmail.com",587)
文件" /usr/lib/python2.7/smtplib.py",第788行, init SMTP。 init (自我,主机,端口,local_hostname,超时)
文件" /usr/lib/python2.7/smtplib.py",第256行, init (code,msg)= self.connect(host,port)
文件" /usr/lib/python2.7/smtplib.py" ;,第316行,在连接中 self.sock = self._get_socket(host,port,self.timeout)
文件" /usr/lib/python2.7/smtplib.py",第794行,在_get_socket中 new_socket = ssl.wrap_socket(new_socket,self.keyfile,self.certfile)
文件" /usr/lib/python2.7/ssl.py",第487行,在wrap_socket中 密码=密码)
文件" /usr/lib/python2.7/ssl.py",第243行, init self.do_handshake()
文件" /usr/lib/python2.7/ssl.py",第405行,在do_handshake中 self._sslobj.do_handshake()
ssl.SSLError:[Errno 1] _ssl.c:510:错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议
提前感谢您的帮助。
答案 0 :(得分:0)
587 是非SSL端口,因此SMTP_SSL
调用失败。尝试使用端口 465 作为
smtplib.SMTP_SSL("smtp.gmail.com", 465)
或使用端口587的方法
smtplib.SMTP("smtp.gmail.com", 587)