python 发送邮件的四种方法汇总


Posted in Python onDecember 02, 2020

这里针对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())

以上就是python 发送邮件的四种方法汇总的详细内容,更多关于python 发送邮件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Django中的CBV和FBV示例介绍
Feb 25 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
tensorflow实现加载mnist数据集
Sep 08 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
Python简单I/O操作示例
Mar 18 Python
Python之pymysql的使用小结
Jul 01 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
详解python中的异常捕获
Dec 15 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
python获取字符串中的email
Mar 31 Python
python 使用pandas读取csv文件的方法
Dec 24 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 #Python
python 实现波浪滤镜特效
Dec 02 #Python
python 如何对logging日志封装
Dec 02 #Python
python3中确保枚举值代码分析
Dec 02 #Python
python使用yaml 管理selenium元素的示例
Dec 01 #Python
python3处理word文档实例分析
Dec 01 #Python
python3中布局背景颜色代码分析
Dec 01 #Python
You might like
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
Python多线程实例教程
2014/09/06 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
网络教育毕业生自我鉴定
2013/10/10 职场文书
爱情寄语大全
2014/04/09 职场文书
幼儿园运动会口号
2014/06/07 职场文书
党性分析材料格式
2014/12/19 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
Go Plugins插件的实现方式
2021/08/07 Golang