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使用Socket(Https)Post登录百度的实现代码
May 18 Python
由面试题加深对Django的认识理解
Jul 19 Python
python求平均数、方差、中位数的例子
Aug 22 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python的dict判断key是否存在的方法
Dec 09 Python
python中翻译功能translate模块实现方法
Dec 17 Python
python绘制高斯曲线
Feb 19 Python
python 通过使用Yolact训练数据集
Apr 06 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 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实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
php日历制作代码分享
2014/01/20 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
php实现生成验证码实例分享
2016/04/10 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
javascript 验证日期的函数
2010/03/18 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
js 作用域和变量详解
2017/02/16 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
python self,cls,decorator的理解
2009/07/13 Python
tornado框架blog模块分析与使用
2013/11/21 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python机器学习库xgboost的使用
2020/01/20 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
二年级学生评语大全
2014/04/23 职场文书
责任担保书范文
2014/05/21 职场文书
学校食品安全实施方案
2014/06/14 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
签字仪式主持词
2015/07/03 职场文书
客户答谢会致辞
2015/07/30 职场文书
2019秋季运动会口号
2019/06/25 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL