123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608 |
- import imaplib
- import shutil
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- import boto3
- from boto3 import Session
- from django.views import View
- from model.models import EmailSortModel, EmailConfigModel
- from Utils.NeteaseMail import NeteaseMail
- from django.views.generic import TemplateView
- from object.ResponseObject import ResponseObject
- import os
- import csv
- class ComprehendView(TemplateView):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.GET, request, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.POST, request, operation)
- def validation(self, request_dict, request, operation):
- response = ResponseObject()
- if operation is None:
- return response.json(444, 'error path')
- else:
- if operation == 'createSort':
- return self.createSort(request_dict, response)
- elif operation == 'doStartSortWord':
- return self.doStartSortWord(request_dict, response)
- elif operation == 'write_csv':
- return self.write_csv(request_dict, response)
- elif operation == 'upload_csv':
- return self.upload_csv(request_dict, response)
- elif operation == 'create_document_classifier':
- return self.create_document_classifier(request_dict, response)
- elif operation == 'create_endpoint':
- return self.create_endpoint(request_dict, response)
- elif operation == 'describe_document_classifier':
- return self.describe_document_classifier(request_dict, response)
- elif operation == 'describe_endpoint':
- return self.describe_endpoint(request_dict, response)
- elif operation == 'delete_endpoint':
- return self.delete_endpoint(request_dict, response)
- elif operation == 'delete_document_classifier':
- return self.delete_document_classifier(request_dict, response)
- elif operation == 'getDocumentClassifier':
- return self.get_document_classifier(request_dict, response)
- elif operation == 'email':
- return self.email(request_dict, response)
- def createSort(self, request_dict, response):
- client = boto3.client('comprehend', region_name='region')
- # Create a document classifier
- create_response = client.create_document_classifier(
- InputDataConfig={
- 'S3Uri': 's3://S3Bucket/docclass/file name'
- },
- DataAccessRoleArn='arn:aws:iam::account number:role/resource name',
- DocumentClassifierName='SampleCodeClassifier1',
- LanguageCode='en'
- )
- print("Create response: %s\n", create_response)
- # Check the status of the classifier
- describe_response = client.describe_document_classifier(
- DocumentClassifierArn=create_response['DocumentClassifierArn'])
- print("Describe response: %s\n", describe_response)
- # List all classifiers in account
- list_response = client.list_document_classifiers()
- print("List response: %s\n", list_response)
- def doStartSortWord(self, request_dict, response):
- client = boto3.client('comprehend', region_name='region')
- start_response = client.start_document_classification_job(
- InputDataConfig={
- 'S3Uri': 's3://srikad-us-west-2-input/docclass/file name',
- 'InputFormat': 'ONE_DOC_PER_LINE'
- },
- OutputDataConfig={
- 'S3Uri': 's3://S3Bucket/output'
- },
- DataAccessRoleArn='arn:aws:iam::account number:role/resource name',
- DocumentClassifierArn=
- 'arn:aws:comprehend:region:account number:document-classifier/SampleCodeClassifier1'
- )
- print("Start response: %s\n", start_response)
- # Check the status of the job
- describe_response = client.describe_document_classification_job(JobId=start_response['JobId'])
- print("Describe response: %s\n", describe_response)
- # List all classification jobs in account
- list_response = client.list_document_classification_jobs()
- print("List response: %s\n", list_response)
- def write_csv(self, request_dict, response):
- file_path = os.path.join(os.path.dirname(__file__) + '/../emailtrainfile/emailtrain.csv')
- with open(file_path, "w", newline='') as f:
- sort = EmailSortModel.objects.values('sort', 'clientquestion')
- for a in sort:
- text = [a['sort'], a['clientquestion']]
- csv_writer = csv.writer(f)
- for i in range(50):
- csv_writer.writerow(text)
- return response.json(0)
- def upload_csv(self, request_dict, response):
- file_path = os.path.join(os.path.dirname(__file__) + '/../emailtrainfile/emailtrain.csv')
- bucket_name = "asj-amazon-comprehend"
- upload_key = "location/emailtrain.csv"
- with open(file_path, "rb") as f:
- NeteaseMail().s3_login().upload_fileobj(f, bucket_name, Key=upload_key)
- return response.json(0)
- def create_document_classifier(self, request_dict, response):
- try:
- response1 = NeteaseMail().aws_login().create_document_classifier(
- DocumentClassifierName='lhq',
- DataAccessRoleArn='arn:aws:iam::697864307463:role/service-role/AmazonComprehendServiceRoleS3FullAccess-admin',
- # Tags=[{'Key': 'string','Value': 'string'},],
- InputDataConfig={
- 'DataFormat': 'COMPREHEND_CSV',
- # | 'AUGMENTED_MANIFEST',
- 'S3Uri': 's3://asj-amazon-comprehend/location/emailtrain.csv',
- # 'LabelDelimiter': 'string',
- # 'AugmentedManifests': [
- # {
- # 'S3Uri': 'string',
- # 'AttributeNames': ['string', ]
- # },
- # ]
- },
- OutputDataConfig={
- 'S3Uri': 's3://asj-amazon-comprehend/output/lhq/'},
- # 'KmsKeyId': 'string'},
- # ClientRequestToken='string',
- LanguageCode='en',
- # | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ar'
- # | 'hi' | 'ja' | 'ko' | 'zh' | 'zh-TW',
- # VolumeKmsKeyId='string',
- # VpcConfig={
- # 'SecurityGroupIds': ['string', ],
- # 'Subnets': ['string', ]
- # },
- Mode='MULTI_CLASS' # 'MULTI_LABEL'
- )
- except Exception as e:
- return response.json(404, repr('模型正在训练或已存在'))
- else:
- print(response1)
- return response.json(0)
- def create_endpoint(self, request_dict, response):
- try:
- response1 = NeteaseMail().aws_login().create_endpoint(
- EndpointName='lhq',
- ModelArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier/lhq',
- # Document classifier arn
- DesiredInferenceUnits=1,
- # ClientRequestToken='string',
- # Tags=[{'Key': 'string','Value': 'string'},]
- )
- except Exception as e:
- return response.json(404, repr('模型正在训练或不存在,请等待模型训练完再创建端点'))
- else:
- print(response1)
- return response.json(0)
- def describe_document_classifier(self, request_dict, response):
- try:
- # classifier_name = request_dict.get('classifier_name', None)
- a = NeteaseMail().aws_arn()[0]
- # classifier_arn = a + str(classifier_name)
- classifier_arn = a + 'lhq'
- response1 = NeteaseMail().aws_login().describe_document_classifier(
- DocumentClassifierArn=classifier_arn
- )
- a1 = {"Status": response1['DocumentClassifierProperties']['Status']}
- except Exception as e:
- return response.json(404, repr('模型不存在'))
- else:
- return response.json(0, a1)
- def describe_endpoint(self, request_dict, response):
- try:
- # endpoint_name = request_dict.get('endpoint_name', None)
- a = NeteaseMail().aws_arn()[1]
- # endpoint_arn = a + str(endpoint_name)
- endpoint_arn = a + 'lhq'
- response1 = NeteaseMail().aws_login().describe_endpoint(
- EndpointArn=endpoint_arn
- )
- a1 = {"Status": response1['EndpointProperties']['Status']}
- except Exception as e:
- return response.json(404, repr('端点不存在'))
- else:
- return response.json(0, a1)
- def delete_endpoint(self, request_dict, response):
- try:
- # endpoint_name = request_dict.get('endpoint_name', None)
- a = NeteaseMail().aws_arn()[1]
- # endpoint_arn = a + str(endpoint_name)
- endpoint_arn = a + 'lhq'
- response1 = NeteaseMail().aws_login().delete_endpoint(
- EndpointArn=endpoint_arn)
- except Exception as e:
- return response.json(404, repr('端点不存在或正在删除中'))
- else:
- return response.json(0)
- def delete_document_classifier(self, request_dict, response):
- try:
- # classifier_name = request_dict.get('classifier_name', None)
- a = NeteaseMail().aws_arn()[0]
- # classifier_arn = a + str(classifier_name)
- classifier_arn = a + 'lhq'
- response1 = NeteaseMail().aws_login().delete_document_classifier(
- DocumentClassifierArn=classifier_arn)
- except Exception as e:
- return response.json(404, repr('模型不存在或正在删除中'))
- else:
- return response.json(0)
- def get_document_classifier(self, request_dict, response):
- ec_qs = EmailConfigModel.objects.filter(emailtag=1) # 获取总邮件
- emailsum = 0
- replyemailsum = 0
- for ec in ec_qs:
- email_server = NeteaseMail().loginEmail(ec.emailserver, ec.fromaddr, ec.password, ec.emailserverport)
- subject_list, from_list, bodydata_list, uid_list, results, email_body, fujian_list, image_list = NeteaseMail().getEmailContext(
- email_server)
- emailsum += len(results)
- print("标题:", len(subject_list), subject_list)
- print("发件人:", len(from_list), from_list)
- print("邮件内容:", len(bodydata_list), bodydata_list)
- print("邮件uid:", len(uid_list), uid_list)
- print("附件判断:", len(fujian_list), fujian_list)
- print('图片数量:', len(image_list), image_list)
- if not bodydata_list:
- print("邮箱内无未读邮件")
- else:
- print('成功拿到邮件数据')
- for i, v in enumerate(subject_list):
- print('-------------------------------------------------------------------------')
- print("邮件标题:", subject_list[i])
- if not bodydata_list[i] or not subject_list[i]:
- print("邮件无正文或无标题,不进行回复")
- continue
- if fujian_list[i] == 'have':
- reply_model = bodydata_list[i]
- image = image_list
- shoujianren = 'liehaoquan2021@163.com'
- fajianren = from_list[i].split()[1]
- NeteaseMail().sentemail(None, uid_list[i],reply_model, image, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- file_path = os.path.join(os.path.dirname(__file__) + '/../emailtrainfile/image/')
- shutil.rmtree(file_path)
- os.mkdir(file_path)
- print('邮件含有图片或附件,已转发到zendesk')
- email_server.set_flags(uid_list[i], b'\\Seen', silent=False)
- continue
- response1 = NeteaseMail().aws_login().classify_document(
- Text=bodydata_list[i].split('\n\n\n\n\n')[0],
- EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/lhq'
- # EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/test'
- )
- # print(response.index(max(response['Classes']['Score'])))
- nums = []
- print('emailsort:')
- for cls in response1['Classes']:
- print(cls['Name'])
- nums.append(cls['Score'])
- print("识别种类及命中率:", response1['Classes'][nums.index(max(nums))])
- if response1['Classes'][nums.index(max(nums))]['Score'] >= 0.95:
- reply_sort = EmailSortModel.objects.filter(
- sort=response1['Classes'][nums.index(max(nums))]['Name']).values('autoreplymodel')
- if reply_sort.exists():
- reply_model = reply_sort[0]['autoreplymodel'] + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + \
- 'At' + email_body[i]['Date'] + from_list[i].split()[0] + \
- from_list[i].split()[1] + \
- 'wrote:\n ' + bodydata_list[i]
- print(reply_model)
- shoujianren = from_list[i].split()[1].replace('<', '').replace('>', '')
- a = NeteaseMail().sentemail(None, uid_list[i], reply_model, None, subject_list[i], ec.fromaddr, shoujianren,
- ec.fromaddr, ec.password)
- email_server.set_flags(uid_list[i], b'\\Seen', silent=False)
- if a == 'fail':
- print("此邮件被判定为垃圾邮件,不进行回复")
- email_server.remove_flags(uid_list[i], b'\\Seen', silent=False)
- else:
- replyemailsum += a
- else:
- print("无此转发分类,不进行回复")
- else:
- reply_model = bodydata_list[i]
- shoujianren = 'liehaoquan2021@163.com'
- fajianren = from_list[i].split()[1]
- NeteaseMail().sentemail(reply_model, None, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- email_server.set_flags(uid_list[i], b'\\Seen', silent=False)
- print("命中率低于0.95,已转发到zendesk")
- # es_qs = EmailSortModel.objects.filter(sort=response1['Classes'][nums.index(max(nums))]['Name'])
- # if es_qs.exists():
- # uemail_qs = EmailConfigModel.objects.filter(userid=es_qs[0]['userid'], langconfig__langcode='en')
- # if uemail_qs.exists():
- # for uem in uemail_qs:
- # NeteaseMail().sentemail(bodydata_list[i], subject_list[i], from_list[i], uem.fromaddr, ec.fromaddr, ec.password)
- NeteaseMail().closeEmail(email_server)
- emaildict = {
- "邮箱内获取到未读邮件数": emailsum,
- "已自动回复的邮件数": replyemailsum
- }
- return response.json(0, emaildict)
- def email(self, request_dict, response):
- from imapclient import IMAPClient
- import email
- import time
- import email.parser
- from nntplib import decode_header
- from email.header import Header
- import chardet
- ec_qs = EmailConfigModel.objects.filter(emailtag=1) # 获取总邮件
- for ec in ec_qs:
- global a, email_server
- #邮件登录
- try:
- email_server = IMAPClient(ec.emailserver, ssl=True, port=ec.emailserverport)
- # email_server = imaplib.IMAP4_SSL(IMAP_SERVER, 993) # 网易企业邮箱服务器及SSL端口
- print("imap4 服务器连接成功")
- email_server.login(ec.fromaddr, ec.password)
- email_server.id_({"name": "IMAPClient", "version": "2.1.0"})
- # email_server.login(FROM_ADDR, PASSWORD)
- print("imap4 (%s)账号密码正确,登录成功" % ec.fromaddr)
- except:
- print("imap4 服务器连接失败")
- email_server.select_folder('INBOX')
- results = email_server.search('UNSEEN') # 读取未读邮件
- print("邮箱内获取到未读邮件:", len(results))
- subject_list = []
- from_list = []
- uid_list = []
- email_body = []
- fujian_list = []
- image_list = []
- plain_list = []
- html_list = []
- a = 0
- # 对每一封邮件进行内容解析
- for uid in results:
- msgdict = email_server.fetch(uid, ['Body[]', 'ENVELOPE'], '(RFC822)')
- mailbody = msgdict[uid][b'BODY[]']
- envelope = msgdict[uid][b'ENVELOPE']
- message = email.message_from_bytes(mailbody)
- text = message.as_string()
- body = email.parser.Parser().parsestr(text)
- nowtime = time.asctime(time.localtime(time.time()))
- nowmonth = nowtime.split()[1]
- nowday = nowtime.split()[2]
- emailmonth = body['Date'].split()[2]
- emailday = body['Date'].split()[1]
- print('email',emailmonth,emailday)
- print('now', nowmonth, nowday)
- # if emailmonth != nowmonth or emailday != nowday:
- # email_server.remove_flags(uid, b'\\Seen', silent=False)
- # continue
- email_body.append(body)
- subject_list.append(decode_header(body['Subject']))
- from_list.append(decode_header(body['from']))
- uid_list.append(uid)
- print("标题:", subject_list)
- attlist = {}
- try:
- for part in body.walk():
- if not part.is_multipart():
- file = part.get_filename() # 附件名
- if file:
- a = 1
- filename = email.header.decode_header(file)[0][0] # 附件名
- charset = email.header.decode_header(file)[0][1] # 编码
- if part.get_all("Content-ID"):
- content_id = part.get_all("Content-ID")[0][1:-1]
- else:
- content_id = "" # 附件ID,也就是邮件源码里面的cid
- ''' 多个附件时将附件名和ID对应保存到dict里面,后面将正文中的cid替换为本地保存路径 '''
- attlist[content_id] = filename
- ''' 附件文件名为中文或有编码的时候要进行转码 '''
- if str(charset) != "None":
- filename = filename.decode(charset)
- filedata = part.get_payload(decode=True) # 附件内容
- ''' 把附件写到文件里面,附件一定要用wb打开,二进制 '''
- file_path = os.path.join(os.path.dirname(__file__) + '/../emailtrainfile/image/')
- image_list.append(file_path + filename)
- with open(file_path + filename, "wb") as fw:
- fw.write(filedata)
- fw.close()
- elif part.get_content_type() == 'text/plain':
- con3 = part.get_payload(decode=True).strip()
- print('plain:', chardet.detect(con3))
- if chardet.detect(con3)['encoding'] == 'utf-8':
- plain_list.append(con3.decode('utf-8'))
- continue
- # if chardet.detect(con3)['encoding'] == 'ISO-8859-1':
- # plain_list.append(con3.decode('ISO-8859-1')) # .decode('gbk').encode('utf8')
- # continue
- else:
- plain_list.append(con3.decode('gbk'))
- continue
- elif part.get_content_type() == 'text/html':
- con3 = part.get_payload(decode=True).strip()
- print('html', chardet.detect(con3))
- if chardet.detect(con3)['encoding'] == 'utf-8':
- html_list.append(con3.decode('utf-8'))
- continue
- # if chardet.detect(con3)['encoding'] == 'ISO-8859-1':
- # html_list.append(con3.decode('ISO-8859-1'))
- # continue
- else:
- html_list.append(con3.decode('gbk'))
- continue
- except Exception as e:
- print(e)
- print('获取邮件内容失败')
- email_server.remove_flags(uid, b'\\Seen', silent=False)
- subject_list.clear()
- from_list.clear()
- uid_list.clear()
- email_body.clear()
- fujian_list.clear()
- image_list.clear()
- plain_list.clear()
- html_list.clear()
- print('-------------------------------------------------------------------------')
- continue
- if a == 1:
- fujian_list.append('have')
- a = 0
- else:
- fujian_list.append('none')
- email_server.remove_flags(uid, b'\\Seen', silent=False)
- print("发件人:", from_list)
- print("邮件内容:")
- print("plain形式:",plain_list)
- print("html形式:",html_list)
- print("邮件uid:", uid_list)
- print("邮件是否含有图片或附件:", fujian_list)
- print('图片或附件名字:', image_list)
- if not html_list and not plain_list:
- print("邮箱内无未读邮件")
- else:
- print('成功拿到邮件数据')
- # 对邮件类型进行判断处理
- for i, v in enumerate(uid_list):
- print("邮件标题:", subject_list[i])
- if html_list and not plain_list:
- print('此邮件仅含有html')
- reply_model = html_list[i]
- fajianren = from_list[i]
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- NeteaseMail().sentemail(email_server, uid_list[i],reply_model, None, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- if plain_list[i] == '':
- print('此邮件无正文')
- reply_model = ''
- fajianren = from_list[i]
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- NeteaseMail().sentemail(email_server, uid_list[i],reply_model, None, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- if not subject_list[i]:
- print('此邮件无主题')
- if html_list and not plain_list:
- print('此邮件无主题且仅含有html')
- reply_model = html_list[i]
- fajianren = from_list[i]
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- biaoti = '(无主题)'
- NeteaseMail().sentemail(email_server, uid_list[i],reply_model, None, biaoti, fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- elif plain_list:
- print('此邮件无主题且含有正文')
- reply_model = plain_list[i]
- fajianren = from_list[i]
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- biaoti = '(无主题)'
- NeteaseMail().sentemail(email_server, uid_list[i], reply_model, None, biaoti, fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- # 处理含有图片或附件的邮件
- if fujian_list[i] == 'have':
- print('此邮件含有图片或附件或视频或压缩包')
- reply_model = html_list[i]
- image = image_list
- fajianren = from_list[i]
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- NeteaseMail().sentemail(email_server, uid_list[i], reply_model, image, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- file_path = os.path.join(os.path.dirname(__file__) + '/../emailtrainfile/image/')
- shutil.rmtree(file_path)
- os.mkdir(file_path)
- print('-------------------------------------------------------------------------')
- break
- if fujian_list[i] == 'none':
- # 处理无图片或附件的邮件
- # 进行种类判断
- print("识别内容:", plain_list[i].split('\n\n')[0]) # plain
- if len(plain_list[i].split('\n\n\n')[0]) < 1000:
- response1 = NeteaseMail().aws_login().classify_document(
- Text=plain_list[i].split('\n\n\n')[0],
- EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/lhq'
- # EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/test'
- )
- # print(response.index(max(response['Classes']['Score'])))
- nums = []
- print('emailsort:')
- for cls in response1['Classes']:
- print(cls['Name'])
- nums.append(cls['Score'])
- print("识别种类及命中率:", response1['Classes'][nums.index(max(nums))])
- # 命中率高于0.95时
- if response1['Classes'][nums.index(max(nums))]['Score'] >= 0.95:
- reply_sort = EmailSortModel.objects.filter(
- sort=response1['Classes'][nums.index(max(nums))]['Name']).values('autoreplymodel')
- if reply_sort.exists():
- reply_model = reply_sort[0]['autoreplymodel'] + '\n' + '\n' + '\n' + '\n' + '\n' + '\n' + \
- 'At' + email_body[i]['Date'] + str(from_list[i].split()[0:-1]) + \
- from_list[i].split()[-1] + \
- 'wrote:\n ' + plain_list[i]
- print(reply_model)
- shoujianren = from_list[i].split()[1].replace('<', '').replace('>', '')
- NeteaseMail().sentemail(email_server, uid_list[i], reply_model, None, subject_list[i], ec.fromaddr, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- else:
- print("此邮件命中率低于0.95")
- reply_model = html_list[i] # html
- fajianren = from_list[i]
- print(fujian_list)
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- NeteaseMail().sentemail(email_server, uid_list[i], reply_model, None, subject_list[i],
- fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- else:
- print("识别内容过长")
- reply_model = html_list[i] # html
- fajianren = from_list[i]
- print(fujian_list)
- shoujianren = 'liehaoquan2021@163.com' # 写zendesk邮箱
- NeteaseMail().sentemail(email_server, uid_list[i], reply_model, None, subject_list[i], fajianren, shoujianren,
- ec.fromaddr, ec.password)
- print('-------------------------------------------------------------------------')
- break
- subject_list.clear()
- from_list.clear()
- uid_list.clear()
- email_body.clear()
- fujian_list.clear()
- image_list.clear()
- plain_list.clear()
- html_list.clear()
- NeteaseMail().closeEmail(email_server)
- return response.json(0)
- # if __name__ == '__main__':
- # ComprehendAction().get_document_classifier()
|