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实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
Aug 01 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
打包PyQt5应用时的注意事项
Feb 14 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
python 中的@运算符使用
May 26 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
openPNE常用方法分享
2011/11/29 PHP
php读取csc文件并输出
2015/05/21 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
php 浮点数比较方法详解
2017/05/05 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
美德少年事迹材料500字
2014/08/19 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL