add email sender
Showing
3 changed files
with
71 additions
and
10 deletions
... | @@ -6,7 +6,7 @@ import base64 | ... | @@ -6,7 +6,7 @@ import base64 |
6 | import asyncio | 6 | import asyncio |
7 | import aiohttp | 7 | import aiohttp |
8 | # from openpyxl import Workbook | 8 | # from openpyxl import Workbook |
9 | from apps.doc.ocr.wb import BSWorkbook | 9 | from apps.doc.ocr.wb import BSWorkbook, Workbook |
10 | from django.core.management import BaseCommand | 10 | from django.core.management import BaseCommand |
11 | 11 | ||
12 | from settings import conf | 12 | from settings import conf |
... | @@ -143,6 +143,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -143,6 +143,7 @@ class Command(BaseCommand, LoggerMixin): |
143 | continue | 143 | continue |
144 | sleep_second = int(conf.SLEEP_SECOND) | 144 | sleep_second = int(conf.SLEEP_SECOND) |
145 | # 3.PDF文件提取图片 | 145 | # 3.PDF文件提取图片 |
146 | start_time = time.time() | ||
146 | img_save_path = os.path.join(doc_data_path, 'img') | 147 | img_save_path = os.path.join(doc_data_path, 'img') |
147 | self.cronjob_log.info('{0} [pdf to img start] [business_type={1}] [doc_id={2}]'.format( | 148 | self.cronjob_log.info('{0} [pdf to img start] [business_type={1}] [doc_id={2}]'.format( |
148 | self.log_base, business_type, doc.id)) | 149 | self.log_base, business_type, doc.id)) |
... | @@ -156,12 +157,13 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -156,12 +157,13 @@ class Command(BaseCommand, LoggerMixin): |
156 | role_summary = { | 157 | role_summary = { |
157 | '银行-户名': [] | 158 | '银行-户名': [] |
158 | } | 159 | } |
159 | interest_keyword = Keywords.objects.filter( | 160 | # interest_keyword = Keywords.objects.filter( |
160 | type=KeywordsType.INTEREST.value).values_list('keyword', flat=True) | 161 | # type=KeywordsType.INTEREST.value).values_list('keyword', flat=True) |
161 | salary_keyword = Keywords.objects.filter( | 162 | # salary_keyword = Keywords.objects.filter( |
162 | type=KeywordsType.SALARY.value).values_list('keyword', flat=True) | 163 | # type=KeywordsType.SALARY.value).values_list('keyword', flat=True) |
163 | loan_keyword = Keywords.objects.filter(type=KeywordsType.LOAN.value).values_list('keyword', flat=True) | 164 | # loan_keyword = Keywords.objects.filter(type=KeywordsType.LOAN.value).values_list('keyword', flat=True) |
164 | wb = BSWorkbook(interest_keyword, salary_keyword, loan_keyword) | 165 | # wb = BSWorkbook(interest_keyword, salary_keyword, loan_keyword) |
166 | wb = Workbook() | ||
165 | loop = asyncio.get_event_loop() | 167 | loop = asyncio.get_event_loop() |
166 | tasks = [self.img_ocr_excel(wb, img_path, role_summary) for img_path in pdf_handler.img_path_list] | 168 | tasks = [self.img_ocr_excel(wb, img_path, role_summary) for img_path in pdf_handler.img_path_list] |
167 | loop.run_until_complete(asyncio.wait(tasks)) | 169 | loop.run_until_complete(asyncio.wait(tasks)) |
... | @@ -189,7 +191,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -189,7 +191,9 @@ class Command(BaseCommand, LoggerMixin): |
189 | else: | 191 | else: |
190 | doc.status = DocStatus.COMPLETE.value | 192 | doc.status = DocStatus.COMPLETE.value |
191 | doc.save() | 193 | doc.save() |
192 | self.cronjob_log.info('{0} [doc process complete] [business_type={1}] [doc_id={2}]'.format( | 194 | end_time = time.time() |
193 | self.log_base, business_type, doc.id)) | 195 | speed_time = int(end_time - start_time) |
196 | self.cronjob_log.info('{0} [doc process complete] [business_type={1}] [doc_id={2}] ' | ||
197 | '[speed_time={3}]'.format(self.log_base, business_type, doc.id, speed_time)) | ||
194 | 198 | ||
195 | self.cronjob_log.info('{0} [stop safely]'.format(self.log_base)) | 199 | self.cronjob_log.info('{0} [stop safely]'.format(self.log_base)) | ... | ... |
... | @@ -253,7 +253,7 @@ class DocView(GenericView, DocHandler): | ... | @@ -253,7 +253,7 @@ class DocView(GenericView, DocHandler): |
253 | query = application_id_query & status_query & data_source_query & upload_finish_time_query & create_time_query | 253 | query = application_id_query & status_query & data_source_query & upload_finish_time_query & create_time_query |
254 | val_tuple = ('id', 'application_id', 'upload_finish_time', 'create_time', 'data_source', 'status') | 254 | val_tuple = ('id', 'application_id', 'upload_finish_time', 'create_time', 'data_source', 'status') |
255 | doc_class, prefix = self.get_doc_class(business_type) | 255 | doc_class, prefix = self.get_doc_class(business_type) |
256 | doc_queryset = doc_class.objects.filter(query).values(*val_tuple).order_by('-upload_finish_time') | 256 | doc_queryset = doc_class.objects.filter(query).values(*val_tuple).order_by('-create_time') |
257 | doc_list = self.get_doc_list(doc_queryset, prefix) | 257 | doc_list = self.get_doc_list(doc_queryset, prefix) |
258 | 258 | ||
259 | total = len(doc_list) | 259 | total = len(doc_list) | ... | ... |
src/common/tools/mail.py
0 → 100644
1 | import os | ||
2 | import smtplib | ||
3 | from email import encoders | ||
4 | from email.header import Header | ||
5 | from email.mime.base import MIMEBase | ||
6 | from email.mime.multipart import MIMEMultipart | ||
7 | from email.mime.text import MIMEText | ||
8 | |||
9 | MAIL_SERVER_HOST = 'smtp.exmail.qq.com' | ||
10 | MAIL_SERVER_PORT = 25 | ||
11 | |||
12 | TIME_OUT = 50 | ||
13 | |||
14 | |||
15 | class MailSender: | ||
16 | |||
17 | def __init__(self, sender, pwd): | ||
18 | self.sender = sender | ||
19 | self.pwd = pwd | ||
20 | self.server = smtplib.SMTP(timeout=TIME_OUT) | ||
21 | self.server.debuglevel = 0 | ||
22 | self.server.connect(host=MAIL_SERVER_HOST, | ||
23 | port=MAIL_SERVER_PORT,) | ||
24 | self.server.login(self.sender, self.pwd) | ||
25 | |||
26 | def close(self): | ||
27 | self.server.close() | ||
28 | |||
29 | def send(self, to_addrs, subject, content, file_list=[]): | ||
30 | msg = MIMEMultipart() | ||
31 | |||
32 | for att_file in file_list: | ||
33 | att = MIMEBase('application', 'octet-stream') | ||
34 | att.set_payload(open(att_file, 'rb').read()) | ||
35 | encoders.encode_base64(att) | ||
36 | att.add_header('Content-Disposition', | ||
37 | 'attachment', | ||
38 | filename=Header(os.path.basename(att_file), 'utf-8').encode()) | ||
39 | msg.attach(att) | ||
40 | |||
41 | msg['Subject'] = Header(subject, 'utf-8') | ||
42 | msg['From'] = self.sender | ||
43 | msg['To'] = ','.join(to_addrs) | ||
44 | |||
45 | content = u'Hi:<br><br>' + \ | ||
46 | content + \ | ||
47 | u'<br><br>祝好!<br><br><br>本邮件为系统自动发送,请勿直接回复!<hr>' | ||
48 | |||
49 | msg.attach(MIMEText(content.encode('utf-8'), 'html', 'utf-8')) | ||
50 | self.server.sendmail(self.sender, to_addrs, msg.as_string()) | ||
51 | # smtplib.SMTPServerDisconnected | ||
52 | |||
53 | |||
54 | # if __name__ == '__main__': | ||
55 | # mail_sender = MailSender() | ||
56 | # mail_sender.send(['1304057458@qq.com'], 'hello', 'world.', []) | ||
57 | # mail_sender.close() |
-
Please register or sign in to post a comment