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 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 Python
Python实现多行注释的另类方法
Aug 22 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
pandas的qcut()方法详解
Jul 06 Python
Python阶乘求和的代码详解
Feb 14 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php编写一个简单的路由类
2011/04/13 PHP
php获取远程文件大小
2015/10/20 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
python链接Oracle数据库的方法
2015/06/28 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
某公司的.net工程师面试题笔试题
2013/11/22 面试题
高校教师自荐信范文
2014/03/13 职场文书
企业职业病防治方案
2014/05/29 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
详解Python函数print用法
2021/06/18 Python