zoukankan      html  css  js  c++  java
  • 随笔:Python发送SMTP邮件方法封装

    随笔:Python发送SMTP邮件方法封装

    1、封装的方法可以用来发送附件
    2、附件名称为中文不会乱码
    3、也可以不带附件
    4、正文是纯文本

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    from email.mime.multipart import MIMEMultipart
    from email.utils import formataddr
    
    
    class Send_smtp_email_report(object):
        '''
        这是用来发送SMTP协议的报告邮件
        '''
        def __init__(self, sender, password, name=''):
            '''
            :param sender: 发送邮件人的邮箱
            :param password: 发送邮件人的密码
            :param name: 发送邮件人的姓名
            '''
            self.__name = name
            self.__sender = sender
            self.__password = password
    
        def send_smtp_email_report(self, receive, subject, send_report, text='', smtp_server='smtp.qq.com', name='', report_name=''):
            '''
            :param receive: 收件人的邮箱
            :param subject: 邮件主题
            :param send_report: 附件报告的绝对路径
            :param report_name: 附件名称
            :param text: 邮件正文
            :param smtp_server:SMTP服务器,如'smtp.qq.com',默认是smtp_server='smtp.qq.com'
            :param name:收件人名称
            :return:
            '''
            # 设置邮件
            msg = MIMEMultipart()
            msg['From'] = formataddr((Header(self.__name, 'utf-8').encode(), self.__sender))
            msg['To'] = formataddr((Header(name, 'utf-8').encode(), receive))
            msg['Subject'] = Header(subject, 'utf-8').encode()
    
            # 邮件正文
            txt = MIMEText(text)
    
            # 将正文加载到邮件中
            msg.attach(txt)
            try:
                # 构造附件
                file = open(send_report, 'rb')
                send_file = file.read()
                file.close()
    
                # 设置附件
                att = MIMEText(send_file, 'base64', 'utf-8')  
                att["Content-Type"] = 'application/octet-stream'  
                att["Content-Disposition"] = 'attachment; filename="%s.html"' % (Header(report_name, 'utf-8').encode())  
    
                # 将附件加载到邮件中
                msg.attach(att)
            finally:
                # 发送邮件
                server = smtplib.SMTP(smtp_server, 25)
                server.set_debuglevel(1)
                server.login(self.__sender, self.__password)
                server.sendmail(self.__sender, [receive], msg.as_string())
                server.quit()
                return '发送成功'
    
    
  • 相关阅读:
    页面可视化搭建工具前生今世
    16、Redis手动创建集群
    15、Redis的集群
    14、Redis的复制
    13、Redis的发布订阅模式
    12、Redis的事务
    11、Redis的持久化(RDB、AOF)
    9、Redis处理过期keys的机制
    8、Redis中sort命令详解
    7、Redis中对ZSet类型的操作命令
  • 原文地址:https://www.cnblogs.com/caodingzheng/p/14007070.html
Copyright © 2011-2022 走看看