python实现发送带附件的邮件代码分享


Posted in Python onSeptember 22, 2020

具体代码如下:

from django.template import loader
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import traceback


class SendEmail(object):
    """
    发送html邮件
    """
    def __init__(self, mail_host, mail_port, mail_user, mail_pass, sender, to_list_email):
        # 创建邮件对象
        self.msg = MIMEMultipart()
        # 邮箱服务地址
        self.mail_host = mail_host
        # 邮箱端口号
        self.mail_port = mail_port
        # 邮箱账号
        self.mail_user = mail_user
        # 密码
        self.mail_pass = mail_pass
        # 发送人
        self.sender = sender
        # 收件人邮箱列表
        self.to_list_email = to_list_email

    def make_html(self, base_html_path, **kwargs):
        """

        :param base_html_path: html模板文件路径
        :param **kwargs: 模板中的参数
        :return:
        """
        mail_html = loader.render_to_string(
            template_name=base_html_path,
            context={
                # "id": tid,
                **kwargs   # 传入模板文件的数据
            }
        )
        return mail_html

    def add_attachment(self, file_path):
        """
        制作附件
        :param file_path:
        :return:
        """
        with open(file_path, 'rb') as f:
            content = f.read()
        att = MIMEText(content, _subtype='plain', _charset='utf-8')
        att["Content-Type"] = 'application/octet-stream'
        att["Content-Disposition"] = 'attachment; filename=task_report.docx'
        att.add_header("Content-Disposition", "attachment", filename=("gbk", "", "{}".format(filename)))  # 如果文件名中有中文的话需设置
        return att

    def send_html_email(self, base_html_path, subject, str_to, str_cc, file_path, **kwargs):
        """

        :param html: html文件对象
        :param subject: 邮件主题
        :return:
        """
        html = self.make_html(base_html_path, **kwargs)
        self.msg.attach(MIMEText(str(html), 'html'))
        self.msg['from'] = Header('安全测试平台', 'utf-8')
        self.msg['Subject'] = Header(subject, 'utf-8')
        self.msg["Accept-Language"] = "zh-CN"
        self.msg["Accept-Charset"] = "ISO-8859-1,utf-8"
        self.msg['to'] = str_to  # 发送人   str
        self.msg['cc'] = str_cc  # 抄送人   str
        # 添加附件
        att = self.add_attachment(file_path)
        self.msg.attach(att)
        # 发送邮件
        try:
            server = smtplib.SMTP()
            server.connect(self.mail_host, self.mail_port)
            server.login(self.mail_user, self.mail_pass)
            server.sendmail(self.sender, self.to_list_email, self.msg.as_string())
            server.quit()
        except Exception:
            print(traceback.format_exc())

内容扩展:

实例二:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

"""
发送带附件邮件的完整代码
"""

class HandleEmail():
  def handle_email(self):
    # step1 连接smtp服务器并登陆
    smtp = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)
    smtp.login(user='XXXXX@qq.com', password='XXXXX')

    # 构造多组件邮件并完善邮件描述性信息
    msg = MIMEMultipart()
    msg['Subject'] = '带附件的邮件-01'
    msg['FROM'] = 'XXXXXX@qq.com'
    msg['To'] = 'XXXXX@163.com'

    # 添加邮件的文本内容
    text = MIMEText(_text='这是邮件正文的内容', _charset='UTF8')
    msg.attach(text)

    # 添加附件和附件header
    with open(file=r'XXXXXXXX\report.html', mode='rb') as f:
      content = f.read()
    attachment = MIMEApplication(_data=content)
    attachment.add_header('content-disposition', 'attachment', filename='report.html')
    msg.attach(attachment)

    # 发送邮件
    smtp.send_message(msg=msg, from_addr='XXXXXXX@qq.com', to_addrs='XXXXX@163.com')


if __name__ == '__main__':
  e_mail = HandleEmail()
  e_mail.handle_email()

使用创建好的smtp对象发送邮件,需要把上面编辑好的msg作为参数传入,然后填写收发件人,如果有多个收件人,以列表的形式传入参数

smtp.send_message(msg=msg,from_addr='',to_addrs='') # 单个收件人
smtp.send_message(msg=msg,from_addr='',to_addrs=['收件人一','收件人二']) # 多个收件人

到此这篇关于python实现发送带附件的邮件代码分享的文章就介绍到这了,更多相关利用python实现发送带附件的邮件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现把xml或xsl转换为html格式
Apr 08 Python
django接入新浪微博OAuth的方法
Jun 29 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python性能测量工具cProfile使用解析
Sep 26 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
对python中arange()和linspace()的区别说明
May 03 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
Python爬虫之爬取二手房信息
Apr 27 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 #Python
利用python绘制中国地图(含省界、河流等)
Sep 21 #Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 #Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 #Python
python3.8动态人脸识别的实现示例
Sep 21 #Python
如何在Anaconda中打开python自带idle
Sep 21 #Python
Python 实现国产SM3加密算法的示例代码
Sep 21 #Python
You might like
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python模仿网页版微信发送消息功能
2018/02/24 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Apache部署Django项目图文详解
2019/07/30 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
《童年》教学反思
2014/02/18 职场文书
县级文明单位申报材料
2014/05/23 职场文书
大学生工作求职信
2014/06/23 职场文书
妈妈活动方案
2014/08/15 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书