1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# -*- coding: utf-8 -*-
"""
Created on Wed Jun 5 10:20:25 2019
@author: zhouyujiang
客服部发送Infosys加密文件
"""
import os
import datetime
import time
import shutil
import configparser
from func_send_email_with_file import send_file_email
def func_mk_send_file_name(date, folder):
datestr = str(date).replace('-', '')[2:8]
AUfile = folder + '\\' + 'AU' + datestr + '.ZIP'
PIfile = folder + '\\' + 'PI' + datestr + '.ZIP'
return [AUfile, PIfile]
def func_find_recent_folder(aims_path):
folder_dict = {}
folder_list = []
# for root, dirs, file in os.walk(aims_path):
# folder_list = dirs
# for i in folder_list:
folder_list = [i for i in os.listdir(aims_path) if not os.path.isdir(i)]
new_folder_List = sorted(folder_list, reverse=True)
# for one in folder_list:
# file_path = aims_path + '\\' + one
# update_time = os.path.getmtime(file_path)
# folder_dict.update({file_path:update_time})
# new_file = sorted(folder_dict.items(), key=lambda x:x[1], reverse=True)
return aims_path + '\\' + new_folder_List[0]
def func_rm_sendfile_to_dir(file_path=r'D:',
send_file_list=[]):
tmp_name = 'send_email_file'
tmp_path = file_path + '\\' + tmp_name
# os.mkdir(tmp_path)
if os.listdir(tmp_path) != []:
for j in os.listdir(tmp_path):
os.remove(tmp_path + '\\' + j)
if os.path.exists(tmp_path):
pass
else:
os.mkdir(tmp_path)
if send_file_list == []:
print('no file will rm, send_eamil_list = []')
else:
for one in send_file_list:
shutil.copy(one, tmp_path)
data_str = str(now)[0:10]
send_file_email(tmp_path, data_str, email_group, email_msg_body_str,
title_str, cc_group)
if __name__ == '__main__':
# 配置文件地址
config_path = r'Y:\send_email.ini'
# 配置文件地址 测试
# config_path = r'D:\code\maintenance\config\send_email.ini'
# 临时存放要发送的邮件地址
temp_file_path = r'D:'
# 要发送的数据地址
log_file = r'D:\\log\\send_email_log_' + str(datetime.datetime.now())[0:10]
f = open(log_file, 'w')
aims_path = r'Z:\\'
CONFIG = configparser.ConfigParser()
CONFIG.read(config_path, encoding='utf-8')
print(CONFIG, file=f)
send_time = CONFIG['send_time']['start_time']
send_time_hour = int(send_time[0:2])
send_time_minute = int(send_time[3:5])
email_group = CONFIG['send_to']['email_group'].split(',')
cc_group = CONFIG['Cc_to']['Cc_group'].split(',')
email_msg_body_str = CONFIG['send_body']['body']
print(send_time, file=f)
print(email_group, file=f)
print(cc_group, file=f)
now = datetime.datetime.now()
weekday = now.weekday()
title_str = '[自动发送邮件]'
while True:
if now.hour == send_time_hour and now.minute == send_time_minute:
print('开始发送邮件:', file=f)
if weekday in (1, 2, 3, 4):
email_msg_body_str = email_msg_body_str
send_day = now - datetime.timedelta(1)
recent_folder = func_find_recent_folder(aims_path)
send_list = func_mk_send_file_name(send_day, recent_folder)
func_rm_sendfile_to_dir(file_path=temp_file_path,
send_file_list=send_list)
print('邮件发送成功', datetime.datetime.now(), file=f)
if weekday in (0,):
email_msg_body_str = email_msg_body_str
send_list = []
recent_folder = func_find_recent_folder(aims_path)
for i in range(1, 4):
send_day = now - datetime.timedelta(i)
recent_folder = func_find_recent_folder(aims_path)
send_list += func_mk_send_file_name(send_day, recent_folder)
func_rm_sendfile_to_dir(send_file_list=send_list)
print('邮件发送成功', datetime.datetime.now(), file=f)
break
if (now.hour > send_time_hour) or (now.hour == send_time_hour and now.minute > send_time_minute):
print('超过发送时间', file=f)
break
else:
print('等待邮件发送时间发送:', file=f)
time.sleep(20)
now = datetime.datetime.now()
f.close()