通过python实现程序报错邮件
1 from email.header import Header 2 from email.mime.text import MIMEText 3 from email.utils import parseaddr,formataddr 4 import smtplib 5 import time 6 7 def _format_addr(s): 8 name,addr = parseaddr(s) 9 return formataddr((Header(name,'utf-8').encode(),addr)) 10 11 def getContent(resouce, final): 12 f = open(resouce, 'rb') 13 finalfile = open(final, 'wb') 14 try: 15 for line in f: 16 if "ERROR" in line: 17 finalfile.write(line) 18 finally: 19 f.close() 20 finalfile.close() 21 22 if __name__ == '__main__': 23 from_addr = '***' #发件地址 24 password = '***' #密码 25 to_addr = '***' #收件地址 26 smtp_server = '***' #发件的服务器,例如 smtp.163.com 27 sourcedir = "update_cat.py.log" #要分析的日志 28 objectdir = "error_log.txt" #目标日志 29 while(True): 30 getContent(sourcedir, objectdir) 31 msg = MIMEText(open(objectdir, 'r').read(), 'utf-8') 32 msg['From'] = _format_addr('programer error <%s>' % from_addr) 33 msg['To'] = _format_addr('administrator <%s>' % to_addr) 34 msg['Subject'] = Header('error information', 'utf-8').encode() 35 36 server = smtplib.SMTP(smtp_server,25) 37 server.login(from_addr,password) 38 server.sendmail(from_addr,[to_addr],msg.as_string()) 39 server.quit() 40 time.sleep(3600)