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 第一步 hello world
Sep 25 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python内置数据类型之列表操作
Nov 12 Python
python3实现名片管理系统
Nov 29 Python
python实现月食效果实例代码
Jun 18 Python
Pytorch中.new()的作用详解
Feb 18 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
讲解Python实例练习逆序输出字符串
May 06 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 Curl出现403错误的解决办法
2014/05/29 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
python实现银行实战系统
2020/02/26 Python
python实现微信打飞机游戏
2020/03/24 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
Pytorch转tflite方式
2020/05/25 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
《太阳》教学反思
2014/02/21 职场文书
2014年市场部工作总结
2014/11/25 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
收银员岗位职责
2015/02/03 职场文书
2015新学期家长寄语
2015/02/26 职场文书