Переглянути джерело

智能邮件客服初版5

lhq 4 роки тому
батько
коміт
8a7a74e995

+ 35 - 33
Utils/NeteaseMail.py

@@ -1,4 +1,5 @@
 import email
+import smtplib
 from email.header import  Header
 from email.mime.text import MIMEText
 from nntplib import decode_header
@@ -33,9 +34,10 @@ class NeteaseMail:
     #关闭邮箱服务器连接
     def closeEmail(self, email_server):
         # 关闭select
-        email_server.close()
+        email_server.shutdown()
+        print('退出邮箱')
         # 关闭连接
-        email_server.logout()
+        # email_server.logout()
 
     #获取邮箱内容、标题、发件人
     def getEmailContext(self, email_server):
@@ -108,37 +110,37 @@ class NeteaseMail:
 
         email_server.quit()
 
-    # def sentemail(self,message,subject,from_addr,to_addr):
-    #     host = 'smtp.163.com'
-    #     # 设置发件服务器地址
-    #     port = 465
-    #     # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式,现在一般是SSL方式
-    #     sender = FROM_ADDR
-    #     # 设置发件邮箱,一定要自己注册的邮箱
-    #     pwd = PASSWORD
-    #     # 设置发件邮箱的授权码密码,根据163邮箱提示,登录第三方邮件客户端需要授权码
-    #     receiver = to_addr
-    #     # 设置邮件接收人,可以是QQ邮箱
-    #     body = message
-    #     # 设置邮件正文,这里是支持HTML的
-    #     msg = MIMEText(body, 'html')
-    #     # 设置正文为符合邮件格式的HTML内容
-    #     msg['subject'] = subject
-    #     # 设置邮件标题
-    #     msg['from'] = from_addr
-    #     # 设置发送人
-    #     msg['to'] = to_addr
-    #     # 设置接收人
-    #     try:
-    #         s = smtplib.SMTP_SSL(host, port)
-    #         # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
-    #         s.login(sender, pwd)
-    #         # 登陆邮箱
-    #         s.sendmail(sender, receiver, msg.as_string())
-    #         # 发送邮件!
-    #         print('Done.sent email success')
-    #     except smtplib.SMTPException:
-    #         print('Error.sent email fail')
+    def sentemail(self,message,subject,from_addr,to_addr,iemial, ipassword):
+        host = 'smtp.163.com'
+        # 设置发件服务器地址
+        port = 465
+        # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式,现在一般是SSL方式
+        sender = iemial
+        # 设置发件邮箱,一定要自己注册的邮箱
+        pwd = ipassword
+        # 设置发件邮箱的授权码密码,根据163邮箱提示,登录第三方邮件客户端需要授权码
+        receiver = to_addr
+        # 设置邮件接收人,可以是QQ邮箱
+        body = message
+        # 设置邮件正文,这里是支持HTML的
+        msg = MIMEText(body, 'html')
+        # 设置正文为符合邮件格式的HTML内容
+        msg['subject'] = subject
+        # 设置邮件标题
+        msg['from'] = from_addr
+        # 设置发送人
+        msg['to'] = to_addr
+        # 设置接收人
+        try:
+            s = smtplib.SMTP_SSL(host, port)
+            # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
+            s.login(sender, pwd)
+            # 登陆邮箱
+            s.sendmail(sender, receiver, msg.as_string())
+            # 发送邮件!
+            print('Done.sent email success')
+        except smtplib.SMTPException:
+            print('Error.sent email fail')
 
     # mailto_list = ['xxxxxx@xx.com]
     #                mail_host = "smtp.163.com"

+ 5 - 3
controller/ComprehendController.py

@@ -107,14 +107,16 @@ class ComprehendView(TemplateView):
         ec_qs =EmailConfigModel.objects.filter(emailtag=1) #获取总邮件
 
         for ec in ec_qs:
-
-            email_server = NeteaseMail().loginEmail(ec['emailserver'], ec['fromaddr'], ec['password'], ec['emailserverport'])
+            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)
 
             for i ,v in enumerate(subject_list):
 
                 client = boto3.client('comprehend')
+                # client = boto3.client('comprehend',region_name='us-east-1')
                 response = client.classify_document(
                     Text=bodydata_list[i],
                     EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/test'
@@ -132,7 +134,7 @@ class ComprehendView(TemplateView):
                     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)
+                            NeteaseMail().sentemail(bodydata_list[i], subject_list[i], from_list[i], uem.fromaddr, ec['fromaddr'], ec['password'])
 
         return response.json(0)
         #print(response)

+ 3 - 9
controller/EmailProjectController.py

@@ -59,12 +59,6 @@ class EmailProjectView(TemplateView):
         return response.json(0)
 
     def do_query(self, request_dict, response):
-        a = EmailProjectConfigModel.objects.all()
-        b = {}
-        c = []
-        for i in a:
-            b['emailprojectid'] = i.emailprojectid
-            b['projecname'] = i.projecname
-            b['projeccode'] = i.projeccode
-            c.append(b.copy())
-        return response.json(0, c)
+        a = EmailProjectConfigModel.objects.values('emailprojectid','projecname', 'projeccode')
+        return response.json(0, list(a))
+

+ 4 - 12
controller/EmailSortController.py

@@ -68,15 +68,7 @@ class EmailSorView(TemplateView):
         return response.json(0)
 
     def do_query(self, request_dict, response):
-        a = EmailSortModel.objects.all()
-        b = {}
-        c = []
-        for i in a:
-            b['emailsortid'] = i.emailsortid
-            b['sort'] = i.sort
-            b['sortcode'] = i.sortcode
-            b['parentsortid'] = i.parentsortid
-            b['isautoreply'] = i.isautoreply
-            b['autoreplymodel'] = i.autoreplymodel
-            c.append(b.copy())
-        return response.json(0, c)
+        a = EmailSortModel.objects.values('emailsortid', 'sort', 'sortcode', 'parentsortid',
+                                          'isautoreply', 'autoreplymodel')
+        return response.json(0, list(a))
+

+ 29 - 22
controller/EmailUserController.py

@@ -7,7 +7,7 @@ from Utils.NeteaseMail import NeteaseMail
 from django.views.generic import TemplateView
 
 from object.ResponseObject import ResponseObject
-from model.models import EmailConfigModel
+from model.models import EmailConfigModel, EmailLangConfig, EmailSortModel, EmailProjectConfigModel
 
 
 class EmailUserView(TemplateView):
@@ -29,6 +29,8 @@ class EmailUserView(TemplateView):
         else:
             if operation == 'do_add':
                 return self.do_add(request_dict, response)
+            elif operation == 'do_addorupdate_index':
+                return self.do_addorupdate_index(request_dict, response)
             elif operation == 'do_delete':
                 return self.do_delete(request_dict, response)
             elif operation == 'do_update':
@@ -36,6 +38,16 @@ class EmailUserView(TemplateView):
             elif operation == 'do_query':
                 return self.do_query(request_dict, response)
 
+    def do_addorupdate_index(self, request_dict, response):
+        lang = EmailLangConfig.objects.values('emaillangid', 'lang')
+        sort = EmailSortModel.objects.values('emailsortid', 'sort')
+        project = EmailProjectConfigModel.objects.values('emailprojectid', 'projecname')
+        a = []
+        a.append(list(lang))
+        a.append(list(sort))
+        a.append(list(project))
+        return response.json(0, a)
+
     def do_add(self, request_dict, response):
         fromaddr = request_dict.get('fromaddr', None)
         password = request_dict.get('password', None)
@@ -46,11 +58,15 @@ class EmailUserView(TemplateView):
         emailtag = request_dict.get('emailtag', None)
         emailproject_id = request_dict.get('emailproject_id', None)
         emailsort_id = request_dict.get('emailsort_id', None)
-        EmailConfigModel.objects.create(fromaddr=fromaddr, password=password, emailservername=emailservername,
-                                        emailserver=emailserver, emailserverport=emailserverport,
-                                        emailserverportagreement=emailserverportagreement,
-                                        emailtag=emailtag, emailproject_id=emailproject_id,
-                                        emailsort_id=emailsort_id)
+        emaillangconfig = request_dict.get('emaillangconfig', None)
+        a = EmailConfigModel.objects.create(fromaddr=fromaddr, password=password, emailservername=emailservername,
+                                            emailserver=emailserver, emailserverport=emailserverport,
+                                            emailserverportagreement=emailserverportagreement,
+                                            emailtag=emailtag, emailproject_id=emailproject_id,
+                                            emailsort_id=emailsort_id)
+        emaillangconfig = emaillangconfig.split(',')
+        if len(emaillangconfig) > 0:
+            a.emaillangconfig.set(emaillangconfig)
         return response.json(0)
 
     def do_delete(self, request_dict, response):
@@ -72,6 +88,7 @@ class EmailUserView(TemplateView):
         emailtag = request_dict.get('emailtag', None)
         emailproject_id = request_dict.get('emailproject_id', None)
         emailsort_id = request_dict.get('emailsort_id', None)
+        emaillangconfig = request_dict.get('emaillangconfig', None)
         EmailConfigModel.objects.filter(emailid=emailid).update(
             fromaddr=fromaddr, password=password,
             emailservername=emailservername,
@@ -79,22 +96,12 @@ class EmailUserView(TemplateView):
             emailserverportagreement=emailserverportagreement,
             emailtag=emailtag, emailproject_id=emailproject_id,
             emailsort_id=emailsort_id)
+        emaillangconfig = emaillangconfig.split(',')
+        if len(emaillangconfig) > 0:
+            EmailConfigModel.objects.get(emailid=emailid).emaillangconfig.set(emaillangconfig)
         return response.json(0)
 
     def do_query(self, request_dict, response):
-        a = EmailConfigModel.objects.all()
-        b = {}
-        c = []
-        for i in a:
-            b['emailid'] = i.emailid
-            b['fromaddr'] = i.fromaddr
-            b['password'] = i.password
-            b['emailservername'] = i.emailservername
-            b['emailserver'] = i.emailserver
-            b['emailserverport'] = i.emailserverport
-            b['emailserverportagreement'] = i.emailserverportagreement
-            b['emailtag'] = i.emailtag
-            b['emailproject_id'] = i.emailproject_id
-            b['emailsort_id'] = i.emailsort_id
-            c.append(b.copy())
-        return response.json(0, c)
+        a = EmailConfigModel.objects.values('fromaddr', 'emailservername', 'emailtag', 'emailsort_id__sort',
+                                            'emailproject_id__projecname', 'emaillangconfig__lang')
+        return response.json(0, list(a))

+ 3 - 10
controller/EmaillangController.py

@@ -60,13 +60,6 @@ class EmaillangView(TemplateView):
         return response.json(0)
 
     def do_query(self, request_dict, response):
-        a = EmailLangConfig.objects.all()
-        b = {}
-        c = []
-        for i in a:
-            b['emaillangid'] = i.emaillangid
-            b['lang'] = i.lang
-            b['langcode'] = i.langcode
-            b['langdescribe'] = i.langdescribe
-            c.append(b.copy())
-        return response.json(0,c)
+        a = EmailLangConfig.objects.values('emaillangid', 'lang', 'langcode', 'langdescribe')
+        return response.json(0, list(a))
+