fix :修改发送邮件功能
This commit is contained in:
parent
296d2ed62d
commit
7393961810
|
@ -2,7 +2,7 @@ import request from '@/utils/request'
|
|||
|
||||
export function sendMsg(data) {
|
||||
return request({
|
||||
url: '/system/sendmsg/',
|
||||
url: '/info/sendmsg/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.urls import path, include
|
||||
from rest_framework import routers
|
||||
from .views import AbilityReviewViewSet, AuditLogViewSet, QualityCommendationViewSet, QualityActivitiesViewSet, ParsePdfViewSet, QualiChangeViewSet, ContactViewSet, ExternalAuditorsViewSet, QualificationViewSet
|
||||
from .views import AbilityReviewViewSet,sendMsg, AuditLogViewSet, QualityCommendationViewSet, QualityActivitiesViewSet, ParsePdfViewSet, QualiChangeViewSet, ContactViewSet, ExternalAuditorsViewSet, QualificationViewSet
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register('ar', AbilityReviewViewSet, basename='abilityreviews')
|
||||
|
@ -14,5 +14,6 @@ router.register('ad', AuditLogViewSet, basename='ad')
|
|||
router.register('pdf', ParsePdfViewSet, basename='pdf')
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls))
|
||||
path('', include(router.urls)),
|
||||
path('sendmsg/', sendMsg.as_view())
|
||||
]
|
|
@ -13,7 +13,11 @@ from apps.system.models import Organization
|
|||
from .models import *
|
||||
from .serializers import *
|
||||
from utils.pdf2txt import run
|
||||
from utils.sedmeg import sendmessage
|
||||
from datetime import datetime
|
||||
from rest_framework.views import APIView
|
||||
from apps.system.models import Role
|
||||
|
||||
import os
|
||||
import traceback
|
||||
import shutil
|
||||
|
@ -494,3 +498,22 @@ class QualiChangeViewSet(RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
|||
)
|
||||
return Response(serializers.data, status = status.HTTP_204_NO_CONTENT)
|
||||
|
||||
|
||||
class sendMsg(APIView):
|
||||
|
||||
def post(self, request):
|
||||
# 获取角色名称
|
||||
names = request.data['names']
|
||||
# 根据角色查询绑定的user
|
||||
role_ids = [role.id for role in Role.objects.filter(name__in=names)]
|
||||
reci_users = []
|
||||
for i in role_ids:
|
||||
role = Role.objects.get(id=i)
|
||||
users = role.user_set.all()
|
||||
username = users.values_list('username', flat=True)
|
||||
reci_users.extend(username)
|
||||
subject = "检测检验月度邮件通知"
|
||||
message = "各个单位提交报表"
|
||||
for user in reci_users:
|
||||
sendmessage(subject,message, user)
|
||||
return Response({"message":"发送成功"}, status = status.HTTP_200_OK)
|
||||
|
|
|
@ -105,26 +105,17 @@ class sendMsg(APIView):
|
|||
def post(self, request):
|
||||
code = random.randint(10000,99999)
|
||||
my_sender = 'gxpt@ctc.ac.cn'
|
||||
# 材料报送二级单位和三级单位
|
||||
names = request.data['names']
|
||||
role_ids = [role.id for role in Role.objects.filter(name__in=names)]
|
||||
reci_users = []
|
||||
for i in role_ids:
|
||||
role = Role.objects.get(id=i)
|
||||
users = role.user_set.all()
|
||||
username = users.values_list('username', flat=True)
|
||||
reci_users.extend(username)
|
||||
my_user = request.data['mail']
|
||||
my_pass = 'Pintai123'
|
||||
# if not User.objects.filter(username=my_user).exists():
|
||||
# return Response('该账户不存在', status=status.HTTP_400_BAD_REQUEST)
|
||||
if not User.objects.filter(username=my_user).exists():
|
||||
return Response('该账户不存在', status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
for u in reci_users:
|
||||
# 邮件内容
|
||||
msg=MIMEText('您好,共享平台本次登陆验证码为' + str(code),'plain','utf-8')
|
||||
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
||||
msg['From']=formataddr(["国检集团检验检测能力共享平台",my_sender])
|
||||
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
||||
msg['To']=formataddr(["",u])
|
||||
msg['To']=formataddr(["",my_user])
|
||||
# 邮件的主题
|
||||
msg['Subject'] = Header(str(code), 'utf-8').encode()
|
||||
|
||||
|
@ -135,11 +126,11 @@ class sendMsg(APIView):
|
|||
# 登录服务器,括号中对应的是发件人邮箱账号、邮箱密码
|
||||
server.login(my_sender, my_pass)
|
||||
# 发送邮件,括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
||||
server.sendmail(my_sender,[u,],msg.as_string())
|
||||
Message.objects.filter(mail=u).delete()
|
||||
Message.objects.create(mail=u, msg=code)
|
||||
server.sendmail(my_sender,[my_user,],msg.as_string())
|
||||
# 关闭连接
|
||||
server.quit()
|
||||
Message.objects.filter(mail=my_user).delete()
|
||||
Message.objects.create(mail=my_user, msg=code)
|
||||
except:
|
||||
return Response('验证码发送失败', status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
"""
|
||||
Author: tianyang.zhang
|
||||
Date: 2020-03-24 15:36:15
|
||||
function: 发送邮件
|
||||
version: 1.0
|
||||
prameter: email
|
||||
"""
|
||||
import smtplib
|
||||
import traceback
|
||||
from email.utils import formataddr
|
||||
from email.mime.text import MIMEText
|
||||
from email.header import Header
|
||||
|
||||
def sendmessage(subject:str, message:str, u):
|
||||
my_pass = 'Pintai123'
|
||||
my_sender = 'gxpt@ctc.ac.cn'
|
||||
try:
|
||||
msg=MIMEText(message, 'plain', 'utf-8')
|
||||
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
||||
msg['From']=formataddr(["国检集团检验检测能力共享平台",my_sender])
|
||||
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
||||
msg['To']=formataddr(["",u])
|
||||
# 邮件的主题
|
||||
msg['Subject'] = Header(str(subject), 'utf-8').encode()
|
||||
|
||||
# SMTP服务器,腾讯企业邮箱端口是465,腾讯邮箱支持SSL(不强制), 不支持TLS
|
||||
# qq邮箱smtp服务器地址:smtp.qq.com,端口号:456
|
||||
# 163邮箱smtp服务器地址:smtp.163.com,端口号:25
|
||||
server=smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)
|
||||
# 登录服务器,括号中对应的是发件人邮箱账号、邮箱密码
|
||||
server.login(my_sender, my_pass)
|
||||
# 发送邮件,括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
||||
server.sendmail(my_sender,[u,],msg.as_string())
|
||||
# Message.objects.filter(mail=u).delete()
|
||||
# Message.objects.create(mail=u, msg=msg)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
#关闭连接
|
||||
server.quit()
|
||||
return 'OK'
|
Loading…
Reference in New Issue