再次更新一篇文章(最近纯属无聊)
背景:大概在19年3月份左右吧,当时做了一个仓库管理系统,每次利用代码运行才能正常使用本机电脑做服务,怕电脑被关机,别人不会启用,虽然有文档,当时就骚操作利用windows自带任务写了一个脚本自动运行,太久了忘了
前段时间呢,又开始瞎研究起来,因为有当时的骚操作,脑子里又出现另外一个骚操作,再整点事情呗
思路:windows任务+bat脚本+python发送邮件,实现电脑登录自动实现发送邮件
python邮件发送:
需要163或者QQ之类的邮箱开通SMTP服务,我用到的是163邮箱作为发送邮箱,在邮箱设置中开通POP3/SMTP服务,如图:
后续的话就是准备python发送邮件的代码了,代码部分如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import time
if __name__=='__main__':
fromaddr='*****@163.com'#发送
password='*****'
# 读取接收文件的邮箱,邮箱单独一行
f=open(r'F:\run\toemail.txt', 'r')
list1=f.readlines()
for i in range(len(list1)):
list1[i]=list1[i].strip('\n')
f.close()
toaddrs=list1
#用toemail.txt维护发送邮箱,也可以直接用下面列表写死收集人邮箱
#toaddrs=['*****@qq.com','*****@dingtalk.com']#接收list,用','.join(toaddrs)
subject = '邮件提示'
#content='hello,this is email content'#内容
date2 = (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
content="电脑已登录,登录时间:"+date2
# 打开文件,同目录下新建test.txt文件,存发历史数据
fo = open("test.txt", "r+")
#print ("文件名: ", fo.name)
# 在文件末尾写入一行
fo.seek(0, 2)
line = fo.write( content + '\n')
fo.close()
'''
fo.seek(0,0)
for index in range(6):
line = next(fo)
print ("文件行号 %d - %s" % (index, line))
'''
# 格式也可以用拉易网,我偷懒没弄
# 拉易网:https://www.drageasy.com/services.html
textApart2 =MIMEText(str(content)+'\n历史登录记录可查看附件.')
textFile='test.txt'
textApart=MIMEApplication(open(textFile,'rb').read())
#textApart=MIMEText(open(r'F:\run\test.txt', 'rb').read(), 'base64', 'utf-8')
textApart.add_header("Content-Disposition",'attachment',filename=textFile)
m = MIMEMultipart()
#m.attach(content, 'plain', 'utf-8')
m.attach(textApart)
m.attach(textApart2)
m['Subject'] = Header(u'您电脑已被登录', 'utf8').encode()
m['From'] = fromaddr
m['To'] = ','.join(toaddrs)
try:
server = smtplib.SMTP('smtp.163.com',25)
#打印发送过程
#server.set_debuglevel(1)
server.login(fromaddr,password)
server.sendmail(fromaddr, toaddrs, m.as_string())
#发送成功
#print('success')
server.quit()
except smtplib.SMTPException as e:
print('error:',e) #打印错误
可以把#print('success')注释拿掉进行测试发送,查看是否能接收到
bat脚本
邮件发送没有问题后,后面就是准备bat脚本文件,用来执行代码
脚本如下:
@echo off
cmd/c "cd/d F:\run &&python 7.py"
@exit
“cd/d F:\run &&python 7.py” cd/d 后面的python邮件发送的目录,&&后面是执行python邮件发送,我命名是7.py(我比较随意)
cmd/c执行结束后会关闭cmd窗口,如果不需要关闭,可以把/c换成/k
双击脚本,校验是否执行成功
windows任务
右击电脑--点击属性--点击任务计划程序
可以创建基本任务,也可以选择创建任务
创建任务,选择只在用户登录时运行,选择触发器,新建触发器,根据自己需求进行维护(记得勾选已启用哦,我自己的禁用了任务)
选择操作,新建操作,进行选择bat执行python发送邮件处理的脚本
选择条件,勾选电源下的选项
后续还有设置中几个选项,根据情况进行勾选确认即可。
测试
任务新建完成后,win键+L进行锁屏,然后进行登录,查看是否发送邮件
纯属娱乐~有兴趣的可以尝试一下哦~