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中AND、OR的一个使用小技巧
Feb 18 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
详解Django中的form库的使用
Jul 18 Python
快速了解Python中的装饰器
Jan 11 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python进行两个表格对比的方法
Jun 27 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
Python Django框架模板渲染功能示例
Nov 08 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
对Keras自带Loss Function的深入研究
May 25 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
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue axios登录请求拦截器
2018/04/02 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
python简单实现获取当前时间
2016/08/27 Python
Python中int()函数的用法浅析
2017/10/17 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
临床医师专业个人自我评价
2014/01/08 职场文书
保护环境建议书300字
2014/05/13 职场文书
生活小常识广播稿
2014/09/16 职场文书
初中体育教学随笔
2015/08/15 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技