python3 通过qq邮箱定时发送邮件
下面的代码为了每天定时发送监控邮件,监控什么呢?监控当天redis队列中是否有没有消费的数据,和当天mysql中新增的数据量
# -*- coding:utf-8 -*-
from common.redis import redisServ
from common.mysql import database
from email.mime.text import MIMEText
from email.utils import formataddr
import smtplib
import time
import sched my_sender = 'xxx@qq.com' # 发件人邮箱账号
my_pass = 'eqhsgi' # 发件人邮箱密码(当时申请smtp给的口令)
my_user = 'xxx@qq.com' # 收件人邮箱账号,我这边发送给自己 # 初始化sched模块的scheduler类
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
schedule = sched.scheduler(time.time, time.sleep) def mail():
ret=True
try:
create_time = time.strftime("%Y-%m-%d",time.localtime())
sql = "select count(1) from amazon_spider_log where create_time>'{create_time}'".format(create_time=create_time)
count = database.query(sql) #这个mysql操作工具类没有贴出来,不需要的可以直接删除
url_num = redisServ.llen('queue:amazon:goods_list_page') #这个redis操作工具包同样没有贴出来,不需要可以删除
msg=MIMEText('redis队列中url数量:'+str(url_num)+'\n'+'爬取的sku数:'+str(count[0][0]),'plain','utf-8')
msg['From']=formataddr(["小污鬼",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["小瓜皮",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="阿波罗项目-监控" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接
except Exception as e:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
print(e)
return ret # 被周期性调度触发的函数
def execute_command(inc):
print('执行主程序') '''''
定时发送邮件
'''
ret = mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
schedule.enter(inc, 0, execute_command, (inc,)) def main(inc):
# enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,
# 给该触发函数的参数(tuple形式)
schedule.enter(0, 0, execute_command,(inc,))
schedule.run() # 每60秒查看下网络连接情况
if __name__ == '__main__':
main(60*60*13) #时间的单位是秒
python3 通过qq邮箱定时发送邮件的更多相关文章
- python3通过qq邮箱发送邮件
python3通过qq邮箱发送邮件 0.了解qq邮箱的SMTP QQ邮箱 POP3 和 SMTP 服务器地址设置如下: 邮箱 POP3服务器(端口995) SMTP服务器(端口465或587) qq. ...
- C#如何利用QQ邮箱SMTP发送邮件
public void SendEmail() { MailMessage msg = new MailMessage(); msg.To.Add("to@qq.com");//收 ...
- 用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
1.先启用QQ邮箱里POP3/STMP服务:生成授权码 2.导入mail.jar包(不要用太古董的技术,你懂得) 3.注意要在代码里加上开启SSL加密的代码 4.直接上代码 import java.u ...
- python QQ邮箱自动发送邮件
于初学者来讲在写发送邮件代码时常见的错误有SMTPAuthenticationError535,有点懵逼,检查用户名,密码正确就是报错, 想当年笔者也是这么过来的,现在就给大家分享一下个人经验: 一, ...
- Selenium+webdriver自动化登陆QQ邮箱并发送邮件
1.关于selenium Selenium的主要功能包括:(1)测试与浏览器的兼容性:测试应用程序能否兼容工作在不同浏览器和操作系统之上.(2)测试系统功能:录制用例自动生成测试脚本,用于回归功能测 ...
- PHP中利用PHPMailer配合QQ邮箱实现发邮件
PHPMailer的介绍: 优点: 可运行在任何平台之上 支持SMTP验证 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址:注:添加抄送.暗送仅win平台下smtp方式支持 支持多种邮件编码包括 ...
- Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...
- java实现qq邮箱每天定时发送邮件
本周四的时候去学校的某机构值班,主要工作是帮老师送文件,干一些杂活.那天没有什么活儿,于是想起用Java实现发送邮件和接收邮件的功能.前几天接触过一点quartz框架,用来实现定时开始任务的功能.于是 ...
- python3.6 django2.06 使用QQ邮箱发送邮件
开通QQ邮箱IMAP/SMTP服务,忘记了,重新开通一下,记住密码串. import smtplib from email.mime.text import MIMEText # 收件人列表 mail ...
随机推荐
- python基础整理5——多进程多线程和协程
进程与线程 1.进程 我们电脑的应用程序,都是进程,假设我们用的电脑是单核的,cpu同时只能执行一个进程.当程序处于I/O阻塞的时候,CPU如果和程序一起等待,那就太浪费了,cpu会去执行其他的程序, ...
- Ubuntu14.04更换阿里云源
步骤很简单一共三步,如下所示: 第一.备份源文件(防止万一) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 第二.修改源文件(这里的源 ...
- BI之报表测试总结
报表测试总结: 1.测试准备工作: 数据准备 保证足够多的有效数据 清楚报表中涉及到的算法.公式 清楚业务功能接口 2.报表测试点 基本测试点:界面.控件.格式.布局.明显的数据错误.js报错.报表标 ...
- P1470 最长前缀 Longest Prefix
题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 ...
- modbustcp封装使用获取设备数据示例
//接受数据请求public function client($pz){ //参数1是:网络协议, //AF_INET: IPv4 网络协议.TCP 和 UDP 都可使用此协议.一般都 ...
- Linux下onvif客户端获取ipc摄像头 GetServices:获取媒体地址(有的h265摄像头必须要这个接口)
GetServices:获取媒体地址(有些h265的摄像头必须用到这个接口,得到获取能力时没获取到的另一个媒体地址) 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部 ...
- [笔记] Delphi 10.2.1 Tokyo 安装使用笔记
Android 平台: ListView 滑动速度已有改善,但比起 Berlin 还是略慢一些(在较慢的机子可感觉的到)仅于 Android 平台,其它平台没差. TMemo, TEdit 输入文字的 ...
- u-boot-1.1.6第2阶段入口函数start_armboot分析
学习目标: 1.分析u-boot-1.1.6第2阶段入口函数void start_armboot (void),熟悉该函数所实现的功能 2.为后面能够掌握u-boot-1.1.6如何启动内核过程打下基 ...
- ruby puts, print, p方法比较
1.puts([obj[, obj2[, ....]]] ) 依次将obj和换行符输出到$>.若没有参数的话则只会输出换行符. 若参数是数组,则依次输出数组元素和换行符.若将既非数组又非字符串的 ...
- C语言学习记录_2019.02.12
"学计算机一定要有一个非常强大的心理状态,计算机不是黑魔法,都是人想出来的,别人能够想的出来,那么,总有一天,我也能够想的出来." 指针类型的变量就是保存地址的变量. int* p ...