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多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python爬取三国演义的实现方法
Sep 12 Python
python 性能优化方法小结
Mar 31 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python Socket编程之多线程聊天室
Jul 28 Python
python小程序实现刷票功能详解
Jul 17 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
Python API 操作Hadoop hdfs详解
Jun 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 彩色文字实现代码
2009/06/29 PHP
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php中使用websocket详解
2016/09/23 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
Python pickle模块用法实例
2015/04/14 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python实现登录接口的示例代码
2017/07/21 Python
pycharm新建一个python工程步骤
2019/07/16 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python高级property属性用法实例分析
2019/11/19 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
建筑工程技术应届生求职信
2013/11/17 职场文书
开学典礼决心书
2014/03/11 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
解除处分决定书
2015/06/25 职场文书
迎新生晚会主持词
2015/06/30 职场文书