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函数的5种参数详解
Feb 24 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
python+flask实现API的方法
Nov 21 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python实现简易自习室座位预约系统
Jun 30 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
一个取得文件扩展名的函数
2006/10/09 PHP
windows xp下安装pear
2006/12/02 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php分页函数示例代码分享
2014/02/24 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
python制作websocket服务器实例分享
2016/11/20 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
Python网络编程详解
2017/10/31 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Python partial函数原理及用法解析
2019/12/11 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
大学生怎样进行自我评价
2013/12/07 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
高三语文复习计划
2015/01/19 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
表扬信范文
2019/04/22 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP