今天对python记录日志和发邮件两个常用功能做了封装

因为这两个是开发中经常会用到的功能,所以今天就做了简单的封装,下面是封装的代码。。。

 1 import logging
 2 
 3 class log(object):
 4 
 5     def __init__(self):
 6         # 定义handler的输出格式
 7         self.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
 8         # 创建一个logger
 9         self.logger = logging.getLogger('run_logger')
10         self.logger.setLevel(logging.DEBUG)#定义日志级别
11         self.ch = logging.StreamHandler()
12         self.ch.setLevel(logging.DEBUG)#定义日志级别
13         self.fh = logging.FileHandler('test.log')
14         self.fh.setLevel(logging.DEBUG)#定义日志级别
15 
16     def Console_enter_info(self):# 再创建一个handler,用于输出到控制台
17         #ch = logging.StreamHandler()
18         #ch.setLevel(logging.DEBUG)
19         self.ch.setFormatter(self.formatter)
20         self.logger.addHandler(self.ch)
21         self.logger.info(99999)
22 
23     def Console_enter_error(self):# 再创建一个handler,用于输出到控制台
24         #ch = logging.StreamHandler()
25         #ch.setLevel(logging.DEBUG)
26         self.ch.setFormatter(self.formatter)
27         self.logger.addHandler(self.ch)
28         self.logger.error(99999)
29 
30 
31     def File_enter_info(self):# 创建一个handler,用于写入日志文件
32         self.fh.setFormatter(self.formatter)
33         self.logger.addHandler(self.fh)
34         self.logger.info('this is info')
35 
36     def File_enter_error(self):# 创建一个handler,用于写入日志文件
37         self.fh.setFormatter(self.formatter)
38         self.logger.addHandler(self.fh)
39         self.logger.error('this is error')

下面是发邮件功能的封装:
 1 from email import encoders
 2 from email.header import Header
 3 from email.mime.text import MIMEText
 4 from email.utils import parseaddr, formataddr
 5 from email.mime.multipart import MIMEMultipart
 6 import smtplib,os
 7 
 8 class Send_email(object):
 9 
10     def __init__(self,username,password,title,content,send_email_host,Addressee_email,port=25):
11         try:
12             self.username = username
13             self.password = password
14             self.title = title
15             self.content = content
16             self.send_email_host = send_email_host
17             self.Addressee_email = Addressee_email
18             self.port = int(port)
19         except Exception as e:
20             print('eroor:',e)
21 
22     def sendlogin_email(self):
23 
24         msg = MIMEText(self.content) # 邮件内容
25         msg['Subject'] = self.title # 邮件主题
26         msg['From'] = self.username  # 发送者账号
27         msg['To'] = self.Addressee_email # 接收者账号列表
28         smtp = smtplib.SMTP(self.send_email_host, port=self.port)  # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
29         smtp.login(self.username, self.password)  # 发送者的邮箱账号,密码
30         smtp.sendmail(self.username, self.Addressee_email, msg.as_string())
31 
32     def __del__(self):
33         self.smtp.quit()

 1 class SendMail(object):
 2     def __init__(self,username,passwd,recv,title,content,
 3                  file=None,
 4                  email_host='smtp.163.com',port=25):
 5         self.username = username
 6         self.passwd = passwd
 7         self.recv = recv
 8         self.title = title
 9         self.content = content
10         self.file = file
11         self.email_host = email_host
12         self.port = port
13     def send_mail(self):
14         msg = MIMEMultipart()
15         #发送内容的对象
16         if self.file:#处理附件的
17             att = MIMEText(open(self.file).read())
18             att["Content-Type"] = 'application/octet-stream'
19             att["Content-Disposition"] = 'attachment; filename="%s"'%self.file
20             msg.attach(att)
21         msg.attach(MIMEText(self.content))#邮件正文的内容
22         msg['Subject'] = self.title  # 邮件主题
23         msg['From'] = self.username  # 发送者账号
24         msg['To'] = self.recv  # 接收者账号列表
25         self.smtp = smtplib.SMTP(self.email_host,port=self.port)
26         #发送邮件服务器的对象
27         self.smtp.login(self.username,self.passwd)
28         try:
29             self.smtp.sendmail(self.username,self.recv,msg.as_string())
30         except Exception as e:
31             print('出错了。。',e)
32         else:
33             print('发送成功!')
34     def __del__(self):
35         self.smtp.quit()
36 
37 if __name__ == '__main__':
38     m = SendMail(
39         username='XXX@163.com',passwd='XXX',recv='XXX@XXX.com',
40         title='新鞋的发送邮件',content='哈哈哈啊哈哈哈哈',file='like_report.txt'
41     )
42     m.send_mail()



原文地址:https://www.cnblogs.com/Huangsh2017Come-on/p/7744511.html