python自动化发送邮件实例讲解


Posted in Python onJanuary 04, 2021

在python中,通过如下两个模块可以实现邮件的自动化操作

  1. smtplib
  2. email

smtplib模块是对SMTP协议的封装,用于发送邮件;email模块用于构建邮件内容,支持以下3种形式的邮件

  1. 纯文本
  2. html
  3. 带附件

首先来看下邮件的构建,对于一封邮件,需要指定发件人,收件人,主题,正文等内容,以最简单的纯文本邮件为例,构建方式如下

>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> subject = '主题'
>>> message = MIMEText('正文', 'plain', 'utf-8')
>>> message['From'] = Header("发件人", 'utf-8')
>>> message['To'] = Header("收件人", 'utf-8')
>>> message['Subject'] = Header(subject, 'utf-8')

通过MIMEText方法来创建邮件,第一个参数为邮件的正文,第二个参数为邮件正文的形式,plain表示纯文本,第三个参数指定编码方式;然后通过From, To, Subject等属性的设置来分别指定发件人,收件人和主题。

对于html形式的邮件,只需要指定MIMEText的第二个参数为html即可,用法如下

>>> msg = '<p>正文</p>'
>>> message = MIMEText(msg, 'html', 'utf-8')

对于带附件的邮件,需要通过MIMEMultipart来创建邮件,用法如下

>>> from email.mime.multipart import MIMEMultipart
>>> message = MIMEMultipart()
>>> message.attach(MIMEText('正文', 'plain', 'utf-8'))
>>> attach = MIMEText(open('input.txt', 'rb').read(), 'base64', 'utf-8')
>>> attach["Content-Type"] = 'application/octet-stream'
>>> attach["Content-Disposition"] = 'attachment; filename="test.txt"'
>>> message.attach(attach)

创建好邮件之后,就可以通过SMTP来发送了,这里以QQ邮箱为例,首先需要开启QQ邮箱的SMTP服务器,然后生成授权码,图示如下

python自动化发送邮件实例讲解

用QQ邮箱发送邮件的代码如下

>>> import smtplib
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> message = MIMEText('正文', 'plain', 'utf-8')
>>> message['From'] = Header("发件人", 'utf-8')
>>> message['To'] = Header("收件人", 'utf-8')
>>> message['Subject'] = Header('主题', 'utf-8')
>>> server=smtplib.SMTP_SSL("smtp.qq.com", 465)
>>> server.login('xxxxxxxx@qq.com', 'dvyybvbwpnnbbdaj')
>>> server.sendmail('xxxxxxxx@qq.com', 'xxxxxxxx@qq.com' , message.as_string())

对于需要定期发送,且内容较为固定的邮件,通过自动化可以大大减少工作量,比如通过python监控磁盘空间,当使用率超过80%时,自动向运维人员发送邮件,以提醒备份和清理磁盘。

到此这篇关于python自动化发送邮件实例讲解的文章就介绍到这了,更多相关使用python自动化发送邮件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从零学python系列之数据处理编程实例(二)
May 22 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
Python字符串切片操作知识详解
Mar 28 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
Python面向对象实现方法总结
Aug 12 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
方法汇总:Python 安装第三方库常用
Apr 26 Python
Python Selenium库的基本使用教程
Jan 04 #Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 #Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 #Python
python Scrapy框架原理解析
Jan 04 #Python
如何用 Python 处理不平衡数据集
Jan 04 #Python
Python创建简单的神经网络实例讲解
Jan 04 #Python
python实现跨年表白神器--你值得拥有
Jan 04 #Python
You might like
使用Sphinx对索引进行搜索
2013/06/25 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
js轮播图代码分享
2016/07/14 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
什么是岗位职责
2013/11/12 职场文书
企业员工集体活动方案
2014/08/17 职场文书
2015年试用期工作总结
2014/12/12 职场文书
常住证明范本
2015/06/23 职场文书
感恩主题班会教案
2015/08/12 职场文书
给学校的建议书400字
2015/09/14 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android