这篇文章主要介绍了python 发送邮件的四种方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

这里针对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正文必须包含

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 发送邮件的四种方法汇总​www.jb51.net

匿名发送邮件python_Python 发送邮件的四种方法汇总相关推荐

  1. python苹果手机照片导入电脑_iphone照片怎么导入电脑?四种方法汇总

    方法一:用itunes复制照片到电脑 1.在电脑上下载并安装itunes. 2.用USB数据线将iPhone和电脑连接好. 3.打开 电脑桌 面的我的电脑或者计算机. 4.点击一个相机图标的Apple ...

  2. html获取data-*值,html5 获取和设置data-*属性值的四种方法讲解

    1.获取id的对象 2.需要获取的就是data-id 和 dtat-vice-id的值 一:getAttribute()方法 const getId = document.getElementById ...

  3. Simulink中构造时变传递函数的四种方法

    1. 原由 传递函数是针对线性时不变(Linear Time-Invariant,LTI)系统定义的,严格来说,时变传递函数的说法并不十分严谨.但 "时变"和"非线性&q ...

  4. 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项

    将Asp.Net网站发布到IIS的四种方法及注意事项: 不管是那种发布方法, 第一件事情是让IIS能够支持asp.net程序, 默认IIS是不开器asp.net网站程序的支持的.在IIS中的" ...

  5. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  6. 简单介绍C语言使用四种方法初始化结构体

    这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...

  7. svg鼠标响应事件的四种方法(其中两种可支持火狐)

    svg鼠标响应事件的四种方法 鼠标响应事件的四种方法,以click事件为例. Mouse Events - SMIL <?xml version="1.0" encoding ...

  8. oracle调整字段精度的四种方法

    oracle调整字段精度的四种方法: 01_执行用户_ddl/dml_表名_注释(建表/授权/同义词) 调整方式一:(精度只能调大不能调小) alter table table_name_a MODI ...

  9. (转).NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...

  10. 详解Java解析XML的四种方法

    http://developer.51cto.com  2009-03-31 13:12  cnlw1985  javaeye  我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...

最新文章

  1. 浏览器内核Trident/Gecko/WebKit/Presto
  2. 群体决策是如何误入歧途的
  3. 四十一、深入Java中的 File类
  4. 变换上三角矩阵_关于马尔可夫矩阵的一些个人研究成果、思考过程及相关解释...
  5. KaliLinux-wafw00f简介及防火墙探测
  6. 《解析几何》吕林根,徐子道第四版 习题 1.4.7,1.4.8,1.4.9
  7. 【四足机器人那些事儿】MiniCheetah中的MPC控制
  8. 基于SSM+SpringBoot+Thymeleaf+LayUI的高校大学生成绩分析管理系统(附论文)
  9. php中lpush(),lPush 命令/方法/函数
  10. 栈和队列的共同处和不同处
  11. powershell快捷键_Windows10 PowerShell快捷键大全
  12. H5页面(三)效果之实现图片360度旋转---------spritespin.js插件
  13. 写好英语科技论文的诀窍: 主动迎合读者期望,预先回答专家可能质疑
  14. kubernetes日志架构
  15. bugku ctf 多种方法解决 (在做题过程中你会得到一个二维码图片)
  16. seaweedfs报存储错误
  17. LA 3406 Bingo *
  18. 广汉计算机哪个学校学最好,计算机专业四川省的广汉市哪个专业学院比较不错...
  19. 基于红外遥控的arduino遥控小车
  20. 前端JS常用工具方法 , 收藏

热门文章

  1. CentOS8设置网络安装源
  2. java写 狐狸找兔子_C++经典问题:狐狸找兔子
  3. 根号五除以三用计算机算,根号5等于多少怎么算
  4. Acwing1183. 电力
  5. 常用的可用性工程方法
  6. 详解pytorch fold和unfold用法
  7. 5款网络故障排除软件
  8. Python爬虫之小说信息爬取与数据可视化分析
  9. Go chan的底层原理
  10. 内核SIP ALG学习指引和基本实现原理(分析BCM方案实现)