import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os class SendEMail(object):
"""封装发送邮件类""" def __init__(self, host: str, port: int, user: str, pwd: str):
self.host = host
self.port = port
self.user = user
self.pwd = pwd def __send(self, msg):
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(self.host, self.port)
smtpObj.login(self.user, self.pwd)
smtpObj.sendmail(self.user, msg["To"], msg.as_string())
print("邮件发送成功")
except Exception as e:
print("邮件发送失败") def send_text(self, to_user: str, content: str, subject: str):
"""
发送文本邮件
:param to_user: 对方邮箱
:param content: 邮件正文,文本格式
:param subject: 邮件主题
:return:
""" # 使用email构造邮件
msg = MIMEText(content, _subtype='plain', _charset="utf8")
msg["From"] = self.user
msg["To"] = to_user
msg["subject"] = subject self.__send(msg) def send_html(self, to_user: str, content: str, subject: str):
"""
发送html格式邮件
:param to_user: 对方邮箱
:param content: 邮件正文,html格式
:param subject: 邮件主题
:return:
"""
# 使用email构造邮件
msg = MIMEText(content, _subtype='html', _charset="utf8")
msg["From"] = self.user
msg["To"] = to_user
msg["subject"] = subject self.__send(msg) def send_attachment(self, to_user: str, content: str, subject: str, files: list):
"""
发送附件邮件
:param to_user: 对方邮箱
:param content: 邮件正文,文本格式
:param subject: 邮件主题
:return:
"""
# 创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = self.user
msg['To'] = to_user
msg['subject'] = subject
# 邮件正文内容
msg.attach(MIMEText(content, 'plain', 'utf-8'))
# 构造附件
for file in files:
att = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
_, file_name = os.path.split(file)
att["Content-Disposition"] = 'attachment; filename="{}"'.format(file_name)
msg.attach(att)
self.__send(msg)

  

python封装发送邮件类的更多相关文章

  1. Python 面向对象基础(类、实例、方法、属性封装)

    python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...

  2. python 日志的配置,python对日志封装成类,日志的调用

    # python 日志的配置,python对日志封装成类,日志的调用 import logging # 使用logging模块: class CLog: # --------------------- ...

  3. Python+Selenium框架设计之框架内封装基类和实现POM

    原文地址https://blog.csdn.net/u011541946/article/details/70269965 作者:Anthony_tester 来源:CSDN    博客地址https ...

  4. python学习13类2之封装

    '''''''''面向对象三大特性:封装,继承,多态1.封装: 类中以_或者__的属性,都是私有属性,禁止外部调用.'''class Student(object): def __init__(sel ...

  5. Python Excel工具类封装, 给excel表头搞点颜色

    封装Excel工具类 我们常用的excel工具类,读有xlrd,写有xlwt.有读有写,新一代库有pandas,openpyxl等等. 大家用法都差不多,今天博主就介绍新手最爱,我也爱的xlrd和xl ...

  6. Python进阶_类与实例

    上一节将到面对对象必须先抽象模型,之后直接利用模型.这一节我们来具体理解一下这句话的意思. 面对对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如studen ...

  7. Python学习:类和实例

    Python学习:类和实例 本文作者: 玄魂工作室--热热的蚂蚁 类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规 ...

  8. Python 内编写类的各种技巧和方法

    Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...

  9. python大法好——Python SMTP发送邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

随机推荐

  1. hive启动出错

    Hive启动报错:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument - 狗子的进阶史 - ...

  2. Golang | 并发

    goroutine 协程(Coroutine) Golang 在语言层面对并发编程进行了支持,使用了一种协程(goroutine)机制, 协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,但 ...

  3. Spring Boot-使用Spring Initializer快速创建Spring Boot项目

    File->project->Spring Initializer 点击next 点击下一步即可,如果是第一次可能需要下载jar包,如下图 resources文件中的目录结构如上图所示 s ...

  4. python循环与基本数据类型内置方法

    今天又是充满希望的一天呢 一.python循环 1.wuile与else连用 当while没有被关键'break'主动结束的情况下 正常结束循环体代码之后会执行else的子代码 "" ...

  5. APSI - 2

    上一篇 APSI-1 其实就是对开源库README文件的一个翻译加上自己的一点点理解,因为篇幅过大,导致继续编辑有些卡顿,所以新开一篇继续. 前面介绍了APSI的大致技术.优化方法.以及举例说明了主要 ...

  6. 软件工程web课程第一次实验作业

    开头总结 本次作业使用html+css+js实现了一个简单页面 最终我要记录的是使用js完成了轮播图中图片背景的转换 <script> window.onload = function ( ...

  7. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  8. MySQL数据存储

    MySQL体系架构 客户端连接器 提供与MySQL服务器建立的支持.目前几乎支持所有主流的服务端编程技术,例如常见的 Java.C.Python..NET等,它们通过各自API技术与MySQL建立连接 ...

  9. HashMap源码理解一下?

    HashMap 是一个散列桶(本质是数组+链表),散列桶就是数据结构里面的散列表,每个数组元素是一个Node节点,该节点又链接着多个节点形成一个链表,故一个数组元素 = 一个链表,利用了数组线性查找和 ...

  10. vscode设置vue文件高亮显示

    打开VS Code,左上角 文件->首选项->设置->文本编辑器->文件,点击右侧的"在settings.json中编辑",进入settings.json文 ...