zoukankan      html  css  js  c++  java
  • 使用python发送邮件的四种方式

      这里针对smtplib做了一系列封装,可以完成以下四种场景:

    • 发送纯文本的邮件
    • 发送html页面的邮件
    • 发送带附件文件的邮件
    • 发送能展示图片的邮件

      以上四种场景,已经做好了二次封装,经测试OK,使用时直接传入对应参数即可,直接上代码

    import smtplib
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    
    
    class SendEMail(object):
        """封装发送邮件类"""
    
        def __init__(self, host, port, msg_from, pwd):
    
            self.msg_from = msg_from
            self.password = pwd
    
            # 邮箱服务器地址和端口
            self.smtp_s = smtplib.SMTP_SSL(host=host, port=port)
    
            # 发送方邮箱账号和授权码
            self.smtp_s.login(user=msg_from, password=pwd)
    
        def send_text(self, to_user, content, subject, content_type='plain'):
            """
            发送文本邮件
            :param to_user: 对方邮箱
            :param content: 邮件正文
            :param subject: 邮件主题
            :param content_type: 内容格式:'plain' or 'html'
            :return:
            """
            msg = MIMEText(content, _subtype=content_type, _charset="utf8")
    
            msg["From"] = self.msg_from
            msg["To"] = to_user
            msg["subject"] = subject
    
            self.smtp_s.send_message(msg, from_addr=self.msg_from, to_addrs=to_user)
    
        def send_file(self, to_user, content, subject, reports_path, filename, content_type='plain'):
            """
            发送带文件的邮件
            :param to_user: 对方邮箱
            :param content: 邮件正文
            :param subject: 邮件主题
            :param reports_path: 文件路径
            :param filename: 邮件中显示的文件名称
            :param content_type: 内容格式
            """
    
            file_content = open(reports_path, "rb").read()
    
            msg = MIMEMultipart()
    
            text_msg = MIMEText(content, _subtype=content_type, _charset="utf8")
            msg.attach(text_msg)
    
            file_msg = MIMEApplication(file_content)
            file_msg.add_header('content-disposition', 'attachment', filename=filename)
            msg.attach(file_msg)
    
            msg["From"] = self.msg_from
            msg["To"] = to_user
            msg["subject"] = subject
    
            self.smtp_s.send_message(msg, from_addr=self.msg_from, to_addrs=to_user)
    
        def send_img(self, to_user, subject, content,  filename, content_type='html'):
            '''
            发送带图片的邮件
            :param to_user: 对方邮箱
            :param subject: 邮件主题
            :param content: 邮件正文
            :param filename: 图片路径
            :param content_type: 内容格式
            '''
            subject = subject
            msg = MIMEMultipart('related')
            # Html正文必须包含<img src="cid:imageid" alt="imageid" width="100%" height="100%>
            content = MIMEText(content, _subtype=content_type, _charset="utf8")
            msg.attach(content)
    msg[
    'Subject'] = subject msg['From'] = self.msg_from msg['To'] = to_user with open(filename, "rb") as file: img_data = file.read() img = MIMEImage(img_data) img.add_header('Content-ID', 'imageid') msg.attach(img) self.smtp_s.sendmail(self.msg_from, to_user, msg.as_string())
  • 相关阅读:
    RTF文件格式
    javascript 正则表达式基础
    不同线程之间传递数据
    JavaScript trim函数
    Simple Editor
    关于RichTextBox字体的问题
    手机短信自动清理方式
    手机来电显示新方法
    具有二维码自动识别功能的交通标志
    利用手机扫描二维码技术识别房屋租赁信息
  • 原文地址:https://www.cnblogs.com/xiaogongjin/p/13180836.html
Copyright © 2011-2022 走看看