作用:
- 检查发放任务的文件夹的文件是否有变动
- 有变动的话发邮件通知
脚本调用
file_listen(path) ,传入想要检查是否变动的路径:
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
files = []
value = {
"title": "有新任务啦",
"body": "text",
"sender": "xxxxx@xxx.com",
"password": "******",
"receiver": "xxxxxx@xxxx.com",
"smtpserver": "smtp.163.com",
"is_send_email": True
}
def file_listen(path):
path = path + "/"
first_dir_list = os.listdir(path)
print("the path( "+ path,"):",first_dir_list)
print("exist file:", files)
new_file = [str(path + file) for file in first_dir_list if os.path.isfile(path + file)]
print("new file:",new_file)
files.extend(new_file)
dirs = [str(path + file) for file in first_dir_list if os.path.isdir(path + file)]
print("new dirs:",dirs)
if dirs:
for dir in dirs:
file_listen(dir)
def send_email(title, body, sender, password, receiver,smtpserver = 'smtp.163.com',**kwargs):
'''
:param title: 邮件标题
:param body: 邮件正文
:param sender: 发送的邮箱
:param password: 发送的邮箱的密码
:param receiver: 接收的邮箱
:param smtpserver: 使用的服务类型
:param is_send_email: 是否调用该方法
:return:
'''
if kwargs['is_send_email']:
subject = Header(title, 'utf-8').encode()
# 构造邮件对象MIMEMultipart对象
# 下面的主题,发件人,收件人,日期是显示在邮件页面上的。
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = sender
print(msg['From'])
msg['To'] = receiver
print( msg['To'])
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
# 我们用set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息。
# smtp.set_debuglevel(1)
result = smtp.login(sender, password)
print("result:",result)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
file_listen("\\\\Server\\自由区\\WSY\\需要做模的文件")
print(files)
text = ""
if os.path.exists("temp.txt"):
with open("temp.txt", "r", encoding="utf8") as f:
text = f.read()
print("Is no changed?:",text == str(files))
if text == str(files):
print("Is no changed")
else:
with open("temp.txt", "w", encoding="utf8") as f:
f.write(str(files))
send_email(**value)
发送邮件
参考我的关于发送邮件的博客,修改 value 中的 sender,password,receiver
- sender:发送的邮箱
- password:发送的邮箱的密码
- receiver:接收的邮箱
定时运行
参考我的关于Win10定时任务的博客。