[置顶] 利用Python 提醒实验室同学值日(自动发送邮件)
前言:
在实验室里一直存在着一个问题,就是老是有人忘记提醒下一个人值日,然后值日就被迫中断了。毕竟良好的 卫生环境需要大家一起来维护的!没办法只能想出一些小对策了。
解决思路:
首先,我想使用python 写个脚本,原因是其拥有众多的库,操作方便。首先实现使用Python 登陆邮箱然后发送 邮件的功能。然后再解决定时发送和对实验室同学轮流发送的问题。在第二步中有两个解决方案:
1⃣️使用win 2012服务器 的定时任务功能,到指定时间进行自动执行脚本。然后将同学们的邮箱放到一个文件中 ,其中第一行为发送邮件的次数。从第二行开始是同学们的邮箱。每执行一次就增加改变一次数值。通过取余,计 算出应该将邮件发送给谁。
2⃣️不用那么麻烦,但是需要一直占用些CPU 资源。就是利用while 循环,让脚本在服务器上一直运行。
当然我选择的是第二种方法做的。
脚本源码:
# -*- coding: UTF-8 -*-
import sys, os, re, urllib, urlparse
import smtplib
import time
import string
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart def sendmail(subject, msg, toaddrs, fromaddr, smtpaddr, password):
'''''
@subject:邮件主题
@msg:邮件内容
@toaddrs:收信人的邮箱地址
@fromaddr:发信人的邮箱地址
@smtpaddr:smtp服务地址,可以在邮箱看,比如163邮箱为smtp.163.com
@password:发信人的邮箱授权码 注意:是授权码不是密码
'''
mail_msg = MIMEMultipart()
if not isinstance(subject, unicode):
subject = unicode(subject, 'utf-8')
mail_msg['Subject'] = subject
mail_msg['From'] = fromaddr
mail_msg['To'] = ','.join(toaddrs)
mail_msg.attach(MIMEText(msg, 'html', 'utf-8'))
try:
s = smtplib.SMTP()
s.connect(smtpaddr) # 连接smtp服务器
s.login(fromaddr, password) # 登录邮箱
s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) # 发送邮件
s.quit()
print "success"
except Exception, e:
print "Error: unable to send email"
print traceback.format_exc() group=("864678132@qq.com","1358548208@qq.com","843822062@qq.com","572939586@qq.com")#用来存放每个人的邮箱
i=0 # 用来记录发送次数,然后对人数取余进行判断应该发送给哪个邮箱
while True:
now = time.strftime("%H") # 获取当前时间 小时
now = time.strftime(now) # 转换成字符串
nows = string.atoi(now) # 转换成整数
if nows == 18: # 进行判断 在十八点后进行发送
fromaddr = "发件人邮箱"
smtpaddr = "smtp.163.com"
toaddrs = [group[i]]
subject = "实验室值日邮件"
password = "授权码"
msg = "今天记得打扫卫生哟!"
sendmail(subject, msg, toaddrs, fromaddr, smtpaddr, password)
i=(i+1)%len(group)
time.sleep(6000) #发送完后 等待一小时,避免重复发送
else:
time.sleep(3000)
总结:
让技术方便生活!
[置顶] 利用Python 提醒实验室同学值日(自动发送邮件)的更多相关文章
- [置顶] 利用Global.asax的Application_BeginRequest 实现url 重写 无后缀
利用Global.asax的Application_BeginRequest 实现url 重写 无后缀 <%@ Application Language="C#" %> ...
- [置顶] 利用Global.asax的Application_Error实现错误记录,错误日志
利用Global.asax的Application_Error实现错误记录 错误日志 void Application_Error(object sender, EventArgs e) { // 在 ...
- [置顶] 利用CXF发布webService的小demo
其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...
- 利用python模拟鼠标点击自动完成工作,提升你的工作效率!
没有什么能比学以致用让学习变得更有动力的了. 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你 ...
- [置顶]
Kubernetes1.7新特性:新增自动伸缩条件和参数
一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...
- 利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...
- python+selenium生成测试报告后自动发送邮件
标签(空格分隔): 自动化测试 运行自动化脚本后,会产生测试报告,而将测试报告自动发送给相关人员,能够让对方及时的了解测试情况,查看测试结果. 整个脚本包括三个部分: 生成测试报告 获取最新的测试报告 ...
- Python+Selenium学习笔记19 - 自动发送邮件
发送简单的邮件 用一个QQ邮箱发送到另一个QQ邮件. 首先设置QQ邮箱,邮箱设置 -> 账号 开启SMTP服务,点击开启按钮,按提示进行操作,需要1毛钱的短信费.开启后如下所示 1 # codi ...
- 如何利用Python实现自动打卡签到
需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...
随机推荐
- 吴裕雄--天生自然 pythonTensorFlow自然语言处理:Seq2Seq模型--训练
import tensorflow as tf # 1.参数设置. # 假设输入数据已经用9.2.1小节中的方法转换成了单词编号的格式. SRC_TRAIN_DATA = "F:\\Tens ...
- 使用 try-with-resources 优雅关闭资源
桂林SEO:我们知道,在 Java 编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等.redis),我们必须在这些外部资源使用完毕后,手动关闭它们. 因为外部资源不由 JVM 管理,无法享 ...
- 关于前端CSS的总结
CSS语法 CSS语言的基本单位是样式声明:propertyName : value ; CSS语言的使用方式: 1.把CSS样式声明作为HTML标签的style属性值.2.使用CSS选择器 CSS常 ...
- 大言不惭 swank? talk about sth or speak too confidently
cán,意思是指说大话而毫不感到难为情.出自<论语·宪问>:“子曰:‘其言之不怍,则为之也难.’”宋·朱熹注:“大言不惭,则无必为之志,而不自度其能否也.欲践其言,其不难哉!” 是不是类似 ...
- C# 元组
Tuple<,); Console.WriteLine(t.Item1); Console.WriteLine(t.Item2); C#7 可以使用圆括号声明一个元组: (); Console. ...
- VLC查看日志的方法
最近使用VLC去播放rtsp网络串流总是失败,显示要查看日志,查看的方法: 进入VLC的GUI,点击视图,添加界面,添加调试窗口: 添加调试窗口,会弹出界面: 上面会有报错的提示. 大佬如果有其他的办 ...
- 65)PHP,跨脚本周期存变量(会话技术)
(1)写入变量,常量,全局变量都不行, (2)试一下用文件存那个变量: 但是有一个问题:就是文件,只要一个用登陆成功了,其余的所有用户都可以直接用那个登录许可的标志了,然后只要用户名和密码登录成功,那 ...
- mysql安装后,进DOS输入命令mysql,提示错误:mysql ERROR 1045 (28000)的解决办法
一.修改my.ini文件,并重启mysql服务 找到配置文件my.ini ,然后将其打开,可以选择用记事本打开 打开后,搜索mysqld关键字,找到后,在mysqld下面添加skip-grant-t ...
- 用Spring Tool Suite简化你的开发
如果你是一个喜欢用spring的人,你可能会在欣赏spring的强大功能外,对其各样的配置比较郁闷,尤其是相差较大的版本在配置文件方面会存在差异,当然你可以去花不少的时间去网上查找相关的资料,当你准备 ...
- 1 jquery对checkbox的简单操作
//全选和全不选 votefunction selectAll(){ if($(":checkbox").prop('checked')){ //$(":chec ...