栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使SMTPHandler不被阻止

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使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!', ('my_company_account@gmail.com', 'top_secret_gmail_password'))gm.setLevel(logging.ERROR)logger.addHandler(gm)try:    1/0except:    logger.exception('FFFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUU-')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号