python实现定时发送邮件到指定邮箱


Posted in Python onDecember 23, 2020

本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下

整个链路:传感器采集端采集数据,边缘端上传数据库,从数据库拿到数据。
产品端有个自动出报告的需求,并且希望自动出的报告可以定时通过邮件发到指定邮箱中。
自动发邮件中也有较多坑,本文特此记录自动发邮件中的坑。
使用:Python3.7,win10系统,163邮箱作为发邮件方,QQ邮箱作为收邮件方。

**第一步:**申请两个账号分别作为发送和接收的账号,本文用的是一个163邮箱,一个是qq邮箱。

python实现定时发送邮件到指定邮箱

第一个坑需要注意了,上图是qq邮箱中的邮箱设置,需要在账户中开启POP3/SMTP服务(一定要开启,不然即使Python中的代码都是对的,也不能正常发送邮件,因为Python中发邮件用的是SMTP的邮件传输协议包),这里还有一个坑需要注意的是:如果你把这个邮箱当作是发送邮件的一方,还需要记住授权码,因为Python中邮箱的登录是用授权码的而不是密码。

python实现定时发送邮件到指定邮箱

在163邮箱中的设置中也将POP3/SMTP服务打开。

python实现定时发送邮件到指定邮箱python实现定时发送邮件到指定邮箱

开启SMTP服务后,一定要记住授权码

**第二步:**Python编写程序

#发送邮件模块
import smtplib
#写邮件模块
import email
#定义邮件类型及内容
"""
邮件体为多组件类型(如果不是单一发送文本或者图片或者附件,那么就需要这个多组件类型将
其它元素打包进来)
"""
from email.mime.multipart import MIMEMultipart
#邮件中的文本信息
from email.mime.text import MIMEText
#邮件中的图片信息
from email.mime.image import MIMEImage
#定义邮件标题
from email.header import Header
#################################################################################################
#设置服务器所需信息
#邮件发送方邮箱地址
sender='写发送方邮箱地址,这里只是示意一下@163.com'
#这个是163邮箱里面POP3/SMTP开启后的授权码,一定注意不是163邮箱的登录密码
#第一次做的时候设置成邮箱登录密码反而邮件不能发送,改成授权码之后才可以
password='这里写授权码,注意不是邮箱登录密码,授权码一般是由随机的16位字母组成'
#邮件接收方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers=['写接收方邮箱地址,这里只是示意一下@qq.com']
###############################################################################################
#邮件基本信息输入
#设置总的邮件体对象,对象类型为mixed
mix_part=MIMEMultipart('mixed')
#发送者邮箱地址
mix_part['From']='写发送方邮箱地址,这里只是示意一下@163.com<写发送方邮箱地址,这里只是示意一下@163.com>'
#接收者邮箱地址
mix_part['To']='写接收方邮箱地址,这里只是示意一下@qq.com'
#邮件标题
subject='2020-5-21测试报告'
mix_part['subject']=Header(subject,'utf-8')
#################################################################################################
#构造文本内容,也就是邮件中正文部分的内容
"""
三个参数:
第一个为文本内容,第二个plain设置文本格式,第三个utf-8设置编码
"""
message_info='python邮件发送测试'
message=MIMEText(message_info,'plain','utf-8')
#通过多组件类型将文本内容打包进来
mix_part.attach(message)
###############################################################################################
#邮件中附件文本的构造
#设置附件文本的路径,除了改路径,其它几行代码基本不需要改动
txt_path=r'C:\Users\Desktop\测试文件.pdf'
txt_file = open(txt_path, 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
# 命名发送的附件名称
txt.add_header('Content-Disposition', 'attachment', filename='测试报告.pdf')
#通过多组件类型将文本附件打包进来
mix_part.attach(txt)
####################################################################################
# 邮件中图片附件的构造
#设置附件图片的路径,除了改路径,其它几行代码基本不需要改动
image_path=r'C:\Users\Desktop\images\test.png'
image_file = open(image_path, 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
#filename需要改成上传的图片名称
image["Content-Disposition"] = 'attachment; filename="test.png"'
#通过多组件类型将图片附件打包进来
mix_part.attach(image)
###################################################################################################
try:
 """
 qq邮箱服务器地址的设置,如果是用qq邮箱发邮件则需要设置,
 本文是用163邮箱发邮件,所以只需要设置163邮箱服务器地址即可
 """
 # smtpObj=smtplib.SMTP('smtp.exmail.qq.com')
 #163邮箱服务器地址的设置
 smtpObj = smtplib.SMTP('smtp.163.com')
 #登录:账号,密码
 smtpObj.login(sender,password)
 smtpObj.sendmail(sender,receivers,mix_part.as_string())
 smtpObj.quit()
 print('邮件发送成功')
except smtplib.SMTPException:
 print('Error:无法发送邮件')

第三步:电脑设置定时发送邮件

win+r调出运行窗口输入taskschd.msc

python实现定时发送邮件到指定邮箱

创建基本任务,然后按照提示一步步点下去即可

python实现定时发送邮件到指定邮箱

按照自己的需求,我这里选择的是一次,然后设置启动程序的未来时间即可

python实现定时发送邮件到指定邮箱
python实现定时发送邮件到指定邮箱
python实现定时发送邮件到指定邮箱

程序或脚本一栏不需要改变,起始于(可选)指的是Python的路径,添加参数(可选)指的是刚才编好的自动发邮件程序的路径。

python实现定时发送邮件到指定邮箱

点击完成即可。

总结如下:

(1)需要将发邮件和接收邮件邮箱设置中的SMTP服务打开,并记住授权码

(2)Python编写程序按步骤一步步来,应该没有啥问题

(3)电脑中设置自动运行程序时,需要注意设置的起始于(可选)以及添加参数(可选)的路径

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python pickle 和 shelve模块的用法
Sep 16 Python
Python基于PycURL实现POST的方法
Jul 25 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
使用Python来开发微信功能
Jun 13 Python
python使用turtle库绘制树
Jun 25 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
使用python绘制温度变化雷达图
Oct 18 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
django使用JWT保存用户登录信息
Apr 22 Python
python实现定时发送邮件
Dec 23 #Python
python脚本定时发送邮件
Dec 22 #Python
如何用python批量调整视频声音
Dec 22 #Python
分享一个python的aes加密代码
Dec 22 #Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 #Python
去除python中的字符串空格的简单方法
Dec 22 #Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 #Python
You might like
PHP4中实现动态代理
2006/10/09 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
零件设计自荐信范文
2013/11/27 职场文书
奥巴马演讲稿
2014/01/08 职场文书
高中课程设置方案
2014/05/28 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
慰问信格式
2015/02/14 职场文书
大学生个人总结范文
2015/02/15 职场文书
个人向公司借款协议书
2016/03/19 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
nginx静态资源的服务器配置方法
2022/07/07 Servers