#!/usr/bin/python
# -*- coding: UTF-8 -*-
# @author:



import smtplib,logging  # 加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
class SendMail(object):
    def __init__(self,sender,sender_pass,receivers,title,content):
        self.sender = sender  #发送地址
        self.title = title  # 标题
        self.content = content  # 发送内容
        self.sys_sender = sender  # 系统账户
        self.receivers = receivers
        self.sys_pwd = sender_pass  # 系统账户密码

    def send(self,file_list):
        """
        发送邮件
        :param file_list: 附件文件列表
        :return: bool
        """
        try:
            # 创建一个带附件的实例
            msg = MIMEMultipart()
            # 发件人格式
            msg['From'] = formataddr(["安全大数据分析", self.sys_sender])
            # 收件人格式
            msg['To'] = formataddr(["", self.sender])
            # 邮件主题
            msg['Subject'] = self.title

            # 邮件正文内容
            msg.attach(MIMEText(self.content, 'plain', 'utf-8'))

            # 多个附件
            for file_name in file_list:
                print("file_name",file_name)
                # 构造附件
                xlsxpart = MIMEApplication(open(file_name, 'rb').read())
                # filename表示邮件中显示的附件名
                xlsxpart.add_header('Content-Disposition','attachment',filename = '%s'%file_name)
                msg.attach(xlsxpart)
            print("AAAAAAAAAAAA")
            smtpObj = smtplib.SMTP()
            print("BBBBBBBBBBB")
            smtpObj.connect("211.10.10.276", 25)  # 25 为 SMTP 端口号
            print("CCCCCCCCCC")
            try:
                smtpObj.login(self.sys_sender, self.sys_pwd)
                logging.info("smtpObj.user:%s", smtpObj.user)
            except Exception as e:
                logging.error("login error: %s",e)
            # 发送邮件
            smtpObj.sendmail(self.sys_sender, receivers, msg.as_string())
            # 退出账户
            smtpObj.quit()
            return True
        except Exception as e:
            print(e)
            return False

if __name__ == '__main__':
    # 发送地址
    sender = "wang###@***.com.cn"
    sender_pass =  "##2@"
    receivers = ['wang###@***.com.cn']
    # 标题
    title = "1400自定义标题:A类风险事件告警"
    # 发送内容
    content = "自定义内容:A类风险事件统计,见附件!"
    # 附件列表
    file_list = ["a.xlsx","b.xlsx"]
    ret = SendMail(sender,sender_pass,receivers,title, content).send(file_list)
    if ret:
        print(ret,type(ret))
        logging.info("send success")
    else:
        logging.error(" 邮件发送错误")

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐