您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

Python实现自动发邮件

时间:2020-07-05 10:43:35  来源:  作者:

情景(Situation)

上文说到小爱面临着要给总部集团的李总每天早上固定发送日报邮件,而且他也找到自动化的方式了,那究竟是什么呢?其实在讲方法之前,其实我们也可以先简单学一下邮件的发送原理,理解了这个原理是更有助于我们理解我们的程序的。

任务(Task)

首先,我们发邮件是一定要有邮箱的,邮箱可以理解为是邮件服务器上的一个账户,我们通过这个账户可以给其它邮件服务器上的账户发送邮件。但是呢,邮件的发送是需要遵守一定协议的,也就是SMTP(Simple Mail Transfer Protocol)协议,即简单邮件传输协议。通过这个协议我们就可以把我们的邮件发到其它账户了。

发邮件的原理是不是是不是很简单呢?小爱查询得知,Python中的smtplib库提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装;email库提供了编辑邮件的功能,于是小爱就准备用它们来发邮件了。

行动(Action)

  1. 邮箱账号密码

我们回想下,发邮件是不是需要发件人邮件和密码、收件人地址呢,那我们先准备好这些数据。关于密码需要说明的是,它并不是登录密码,而是邮箱的授权码。

sender="****@163.com" #发件人邮箱地址
pw="*****"  #邮箱授权码,在邮件设置中获取
to=["****@qq.com"] #收件人邮箱地址,有多人的话就是列表

2、邮件标题

小爱准备将标题定位“部门日报+前一天日期”的格式。

import datetime
yesterday=(datetime.date.today() + datetime.timedelta(days = -1)).strftime("%Y-%m-%d")
title='部门日报'+yesterday

3、邮件附件

日报肯定是要放在附件里的。

filename=title+'.docx'

4、邮件正文

接下来就是要构建邮件正文了

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
msg=MIMEMultipart()  #构建带附件的邮件需要用这个实例
msg["From"] = Header(sender)
msg["To"] = Header(",".join(to))
msg["Subject"] = Header(title)
msg.attach(MIMEText("领导请查收!","plain","utf-8"))  #邮件正文,plain是纯文本的意思
att1 = MIMEText(open(filename, "rb").read(),"base64","utf-8")
#将filename作为附件上传
att1.add_header('Content-Disposition',"attachment",filename=att_title)
#filename是附件的显示名字,可以自由定义
msg.attach(att1)

5、发送邮件

接下来就是发送邮件了。

import smtplib as SMTP
server = SMTP.SMTP()
server.connect("smtp.163.com",25)
server.login(sender,pw)
server.sendmail(sender,to,msg.as_string())
server.quit()
print ("a")

结果(Result)

Python实现自动发邮件

 

把上面的程序执行一遍就会在目的地邮箱收到如下邮件,是不是很简单呢,你成功了吗?反正小爱是成功了,小爱最后把两个脚本文件合成了一个文件,每天定时运行就可以完全解决制作日报并发送邮件的任务了。从此,小爱再也不用担心因为路上堵车而无法准时制作日报发送邮件了!



Tags:Python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  Tags: Python  点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  Tags: Python  点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  Tags: Python  点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  Tags: Python  点击:(4)  评论:(0)  加入收藏
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Tags: Python  点击:(6)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  Tags: Python  点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  Tags: Python  点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  Tags: Python  点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  Tags: Python  点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  Tags: Python  点击:(5)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条