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 04 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
python人民币小写转大写辅助工具
Jun 20 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
python 多维高斯分布数据生成方式
Dec 09 Python
python 实现list或string按指定分段
Dec 25 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
基于python实现模拟数据结构模型
Jun 12 Python
pytorch Dropout过拟合的操作
May 27 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中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
php session劫持和防范的方法
2013/11/12 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
JS实现放烟花效果
2020/03/10 Javascript
python多线程扫描端口示例
2014/01/16 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
python去除字符串中的换行符
2017/10/11 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
如何让python的运行速度得到提升
2020/07/08 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
历史专业大学生职业生涯规划书
2014/03/13 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
主题党日活动总结
2014/07/08 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
政审证明材料
2015/06/19 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
JavaScript实现队列结构过程
2021/12/06 Javascript