• 今天对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()


    
    
  • 相关阅读:
    c++中for的四种用法
    同步
    排列算法(reverse...rotate...next_permutation)
    指针
    const的使用
    const_cast
    c++设计模式——单例模式
    c++中的流
    c++从string类型转换为bool类型
    结构体字节对齐方式
  • 原文地址:https://www.cnblogs.com/Huangsh2017Come-on/p/7744511.html
Copyright © 2020-2023  润新知