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 的列表遍历删除实现代码
Apr 12 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
pytorch构建网络模型的4种方法
Apr 13 Python
pandas带有重复索引操作方法
Jun 08 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
使用python远程操作linux过程解析
Dec 04 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 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
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
业绩考核岗位职责
2014/02/01 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技