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 元组(Tuple)操作详解
Mar 11 Python
python实现自动重启本程序的方法
Jul 09 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
在python中使用nohup命令说明
Apr 16 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python else语句在循环中的运用详解
Jul 06 Python
python调用win32接口进行截图的示例
Nov 11 Python
Pandas之缺失数据的实现
Jan 06 Python
Python List remove()实例用法详解
Aug 02 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
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
php实现分页显示
2015/11/03 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
JS实现简单日历特效
2020/01/03 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python中常用信号signal类型实例
2018/01/25 Python
Php多进程实现代码
2018/05/07 Python
浅谈python标准库--functools.partial
2019/03/13 Python
python os模块在系统管理中的应用
2020/06/22 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
安全生产投入制度
2014/01/29 职场文书
多人股份制合作协议书
2016/03/19 职场文书