Jelajahi Sumber

智能邮件客服初版6

lhq 4 tahun lalu
induk
melakukan
c5614fc98a
2 mengubah file dengan 28 tambahan dan 14 penghapusan
  1. 11 3
      Utils/NeteaseMail.py
  2. 17 11
      controller/ComprehendController.py

+ 11 - 3
Utils/NeteaseMail.py

@@ -5,7 +5,7 @@ from email.mime.text import MIMEText
 from nntplib import decode_header
 from imapclient import IMAPClient
 
-
+import email.parser
 
 class NeteaseMail:
 
@@ -57,7 +57,10 @@ class NeteaseMail:
                 message = email.message_from_bytes(mailbody)
 
                 msgfrom = message['from']
-                for part in message.walk():
+
+                text = message.as_string()
+                body = email.parser.Parser().parsestr(text)
+                for part in body.walk():
 
                     if part['Subject']:
                         subject_list.append(decode_header(part['Subject']))
@@ -69,9 +72,14 @@ class NeteaseMail:
                         name = part.get_param("name")  # 如果是附件,这里就会取出附件的文件名
                         if name:
                            print('附件')
-                        else:
+                        elif part.get_content_type() == 'text/plain':
                             con3 = part.get_payload(decode=True).strip()
                             bodydata_list.append(con3.decode('gbk'))
+                            break
+                        else:
+                            con3 = part.get_payload(decode=True).strip()
+                            bodydata_list.append(con3.decode('utf8'))
+                            break
                         # print '+'*60 # 用来区别各个部分的输出
 
 

+ 17 - 11
controller/ComprehendController.py

@@ -109,33 +109,39 @@ class ComprehendView(TemplateView):
         for ec in ec_qs:
             email_server = NeteaseMail().loginEmail(ec.emailserver, ec.fromaddr, ec.password, ec.emailserverport)
             subject_list, from_list, bodydata_list = NeteaseMail().getEmailContext(email_server)
-            print(subject_list, from_list, bodydata_list)
-            print('成功拿到邮箱数据')
-            NeteaseMail().closeEmail(email_server)
+            print("标题:", subject_list)
+            print("发件人:", from_list)
+            print("邮件内容:", bodydata_list)
+            if subject_list == []:
+                print("邮箱内无邮件")
+            else:
+                print('成功拿到邮箱数据')
+            # NeteaseMail().closeEmail(email_server)
 
             for i ,v in enumerate(subject_list):
 
-                client = boto3.client('comprehend')
-                # client = boto3.client('comprehend',region_name='us-east-1')
-                response = client.classify_document(
+                client = boto3.client(service_name='comprehend', region_name='us-east-1',
+                                      aws_access_key_id='AKIA2E67UIMD45Y3HL53',
+                                      aws_secret_access_key='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')
+                response1 = client.classify_document(
                     Text=bodydata_list[i],
                     EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/test'
                 )
                 #print(response.index(max(response['Classes']['Score'])))
                 nums = []
-                for cls in response['Classes']:
+                for cls in response1['Classes']:
                     print(cls['Name'])
                     nums.append(cls['Score'])
 
-                print(response['Classes'][nums.index(max(nums))])
+                print(response1['Classes'][nums.index(max(nums))])
 
-                es_qs = EmailSortModel.objects.filter(sort=response['Classes'][nums.index(max(nums))]['Name'])
+                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().sentemail(bodydata_list[i], subject_list[i], from_list[i], uem.fromaddr, ec.fromaddr, ec.password)
+            NeteaseMail().closeEmail(email_server)
         return response.json(0)
         #print(response)