首页 > 编程 > Python > 正文

把traceback信息传递给字符串,并且发送给邮箱

2020-01-04 17:37:34
字体:
来源:转载
供稿:网友

很简单的代码主要用到traceback的file参数imspect模块主要用于输出错误文件路径,方便查看错误出处应该需要配置 邮件发送服务器

[Python]代码


 

  1. import os 
  2. import sys 
  3. import traceback 
  4. import inspect 
  5. import datetime 
  6. import smtplib, mimetypes 
  7. from email.MIMEText import MIMEText 
  8.  
  9. class MailSender(object): 
  10.     ''
  11.     向邮箱发送错误信息 
  12.     用法:MailSender().SendMail(receiverlist, sub = 'AntiFraud ERROR', content= 'Error info'
  13.     ''
  14.     def __init__(self): 
  15.         self.frm = "******@***.***" 
  16.         self.message = ''  # restore the info of traceback 
  17.         self.errFilePath = '' 
  18.  
  19.     def write(self, str): 
  20.         ''
  21.         把traceback信息存储必须的函数 
  22.         ''
  23.         self.message += str 
  24.  
  25.     def __getContent(self): 
  26.         ''
  27.         得到traceback信息 
  28.         ''
  29.         traceback.print_exc(file = self) 
  30.  
  31.     def __getReceiverList(self, receivers) : 
  32.         ''
  33.         得到收件人列表 
  34.         ''
  35.         if isinstance(receivers, list): 
  36.             return ';'.join(receivers) 
  37.         return receivers 
  38.  
  39.     def __getErrFilePath(self): 
  40.         ''
  41.         得到发生error的文件的路径 
  42.         ''
  43.         n = len(inspect.stack()) 
  44.         current_file = inspect.stack()[n-1][1] 
  45.         return os.path.abspath(current_file) 
  46.  
  47.     def sendMail(self, receiver, sub = 'ERROR sub', content= 'Error info'): 
  48.         ''
  49.         发送邮件 
  50.         ''
  51.         receiverlist = self.__getReceiverList(receiver) 
  52.         self.__getContent() 
  53.         self.errFilePath = self.__getErrFilePath() 
  54.         content = ">>>%s<<<%s%s%s%s" % (content, '/nin: ',str(self.errFilePath), '/n', self.message) 
  55.         try
  56.             msg = MIMEText(content) 
  57.             msg['From'] = self.frm 
  58.             msg['To'] = receiverlist 
  59.             msg['Subject'] = sub 
  60.             smtp_server = smtplib.SMTP('localhost'
  61.             smtp_server.sendmail(self.frm, receiver, msg.as_string()) 
  62.             smtp_server.quit() 
  63.         except Exception, ex: 
  64.             print 'Error when sending email' 
  65.             raise ex 
  66.     # 
  67.  
  68. def test(): 
  69.     receiver = ['*****@126.com'
  70.     mm = MailSender() 
  71.     try
  72.         a = int(''
  73.     except Exception, ex: 
  74.         #sub = 'Error' 
  75.         #content = 'ERror when program running' 
  76.         mm.sendMail(receiver) 
  77.  
  78. if __name__ =='__main__'
  79.     test() 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表