如何使SMTPHandler不被阻止

如何使SMTPHandler不被阻止,第1张

如何使SMTPHandler不被阻止

这是我使用的实现,我基于此Gmail改编的SMTPHandler。
我把发送到SMTP的部分放在了另一个线程中。

import logging.handlersimport smtplibfrom threading import Threaddef smtp_at_your_own_leasure(mailhost, port, username, password, fromaddr, toaddrs, msg):    smtp = smtplib.SMTP(mailhost, port)    if username:        smtp.ehlo() # for tls add this line        smtp.starttls() # for tls add this line        smtp.ehlo() # for tls add this line        smtp.login(username, password)    smtp.sendmail(fromaddr, toaddrs, msg)    smtp.quit()class ThreadedTlsSMTPHandler(logging.handlers.SMTPHandler):    def emit(self, record):        try: import string # for tls add this line try:     from email.utils import formatdate except importError:     formatdate = self.date_time port = self.mailport if not port:     port = smtplib.SMTP_PORT msg = self.format(record) msg = "From: %srnTo: %srnSubject: %srnDate: %srnrn%s" % (      self.fromaddr,      string.join(self.toaddrs, ","),      self.getSubject(record),      formatdate(), msg) thread = Thread(target=smtp_at_your_own_leasure, args=(self.mailhost, port, self.username, self.password, self.fromaddr, self.toaddrs, msg)) thread.start()        except (KeyboardInterrupt, SystemExit): raise        except: self.handleError(record)

用法示例

logger = logging.getLogger()gm = ThreadedTlsSMTPHandler(("smtp.gmail.com", 587), 'bugs@my_company.com', ['admin@my_company.com'], 'Error found!', ('[email protected]', 'top_secret_gmail_password'))gm.setLevel(logging.ERROR)logger.addHandler(gm)try:    1/0except:    logger.exception('FFFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUU-')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5642912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存