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脚本判断 Linux 是否运行在虚拟机上
Apr 25 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python做简单的字符串匹配详解
Mar 21 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Tesserocr库的正确安装方式
Oct 19 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
通过实例了解python property属性
Nov 01 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python实现最速下降法
Mar 24 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的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
document.all与WEB标准
2020/05/13 Javascript
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
新教师工作感言
2014/02/16 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
驾驶员安全责任书
2014/07/22 职场文书
委托书的写法
2014/09/16 职场文书
消费者投诉书范文
2015/07/02 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
Django中session进行权限管理的使用
2021/07/09 Python
解决mysql的int型主键自增问题
2021/07/15 MySQL
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server