无法使用smptlib和loggings发送错误日志电子邮件,Python

时间:2016-07-10 06:44:18

标签: python-2.7 email logging smtplib

您好我正在尝试在发出异常时向自己发送电子邮件。但是我得到一个例外,我不知道如何解决。这是代码和异常。我已经尝试了所有的答案,但徒劳无功

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:未知协议

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

587 是非SSL端口,因此SMTP_SSL调用失败。尝试使用端口 465 作为

smtplib.SMTP_SSL("smtp.gmail.com", 465)

或使用端口587的方法

smtplib.SMTP("smtp.gmail.com", 587)