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 相关文章推荐
python多线程用法实例详解
Jan 15 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
Python列表生成式与生成器操作示例
Aug 01 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
Python实现打砖块小游戏代码实例
May 18 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
pycharm debug 断点调试心得分享
Apr 16 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中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
如何让CI框架支持service层
2014/10/29 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
Javascript学习指南
2014/12/01 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
Python3.x和Python2.x的区别介绍
2013/02/12 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python使用RNN实现文本分类
2018/05/24 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
python实现五子棋人机对战游戏
2020/03/25 Python
django用户登录验证的完整示例代码
2019/07/21 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
出纳试用期自我鉴定
2014/04/07 职场文书