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. python-使用函数求特殊a串数列和

    给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和 函数接口定义: 1 fn(a,n) 2 其中 a 和 n 都是用 ...

  2. 【uniapp 开发】智能温控开关 (环状图)

    index.vue <template> <view> <view class="qiun-columns"> <uCharts id=& ...

  3. 【Android开发】【布局】 仿QQ的UI

    Demo地址

  4. caioj 1031: [视频]递归1(全排列)【DFS】【全排列】

    题目大意:先给一个正整数 n( 1 < = n < = 10 ),输出1到n的所有全排列. 题解:这道题目我们可以用递归来实现,递归在图论中又称为"深度优先搜索"(De ...

  5. php文件下载服务器代码

    事情的起因 额,平板想下载电脑上的pdf文件,我开启了web服务,局域网下的ipad访问该文件web路径会直接打开该pdf,而不是下载.于是本小白就折腾了一下. 源代码 <?php forceD ...

  6. Spring Boot-@ImportResource注解

    @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效 第一步:创建一个spring配置文件bean.xml <?xml version="1.0&quo ...

  7. spring data es操作es

    https://www.freesion.com/article/59481222940/

  8. Mybatis-Plus查询整理

    1.Hibernate是全ORM(对象关系映射)框架,利用完整的javabean对象与数据库映射结构来自动生成sql. 2.Mybatis是半ORM框,仅有字段映射,需要手写sql语句和对象字段结合生 ...

  9. CTF中的一些图形密码

    1.传统猪圈密码 猪圈密码又称为亦称朱高密码.共济会暗号.共济会密码或共济会员密码:是一种以特定符号来替换字母的加密方式 在线解密网址:http://moersima.00cha.net/zhuqua ...

  10. 论文解读(BGRL)《Bootstrapped Representation Learning on Graphs》

    论文信息 论文标题:Bootstrapped Representation Learning on Graphs论文作者:Shantanu Thakoor, Corentin Tallec, Moha ...