fix :修改发送邮件功能
This commit is contained in:
parent
296d2ed62d
commit
7393961810
|
@ -2,7 +2,7 @@ import request from '@/utils/request'
|
||||||
|
|
||||||
export function sendMsg(data) {
|
export function sendMsg(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/sendmsg/',
|
url: '/info/sendmsg/',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework import routers
|
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 = routers.DefaultRouter()
|
||||||
router.register('ar', AbilityReviewViewSet, basename='abilityreviews')
|
router.register('ar', AbilityReviewViewSet, basename='abilityreviews')
|
||||||
|
@ -14,5 +14,6 @@ router.register('ad', AuditLogViewSet, basename='ad')
|
||||||
router.register('pdf', ParsePdfViewSet, basename='pdf')
|
router.register('pdf', ParsePdfViewSet, basename='pdf')
|
||||||
|
|
||||||
urlpatterns = [
|
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 .models import *
|
||||||
from .serializers import *
|
from .serializers import *
|
||||||
from utils.pdf2txt import run
|
from utils.pdf2txt import run
|
||||||
|
from utils.sedmeg import sendmessage
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from rest_framework.views import APIView
|
||||||
|
from apps.system.models import Role
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -494,3 +498,22 @@ class QualiChangeViewSet(RbacFilterSet, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
)
|
)
|
||||||
return Response(serializers.data, status = status.HTTP_204_NO_CONTENT)
|
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):
|
def post(self, request):
|
||||||
code = random.randint(10000,99999)
|
code = random.randint(10000,99999)
|
||||||
my_sender = 'gxpt@ctc.ac.cn'
|
my_sender = 'gxpt@ctc.ac.cn'
|
||||||
# 材料报送二级单位和三级单位
|
my_user = request.data['mail']
|
||||||
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_pass = 'Pintai123'
|
my_pass = 'Pintai123'
|
||||||
# if not User.objects.filter(username=my_user).exists():
|
if not User.objects.filter(username=my_user).exists():
|
||||||
# return Response('该账户不存在', status=status.HTTP_400_BAD_REQUEST)
|
return Response('该账户不存在', status=status.HTTP_400_BAD_REQUEST)
|
||||||
try:
|
try:
|
||||||
for u in reci_users:
|
|
||||||
# 邮件内容
|
# 邮件内容
|
||||||
msg=MIMEText('您好,共享平台本次登陆验证码为' + str(code),'plain','utf-8')
|
msg=MIMEText('您好,共享平台本次登陆验证码为' + str(code),'plain','utf-8')
|
||||||
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
|
||||||
msg['From']=formataddr(["国检集团检验检测能力共享平台",my_sender])
|
msg['From']=formataddr(["国检集团检验检测能力共享平台",my_sender])
|
||||||
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
|
||||||
msg['To']=formataddr(["",u])
|
msg['To']=formataddr(["",my_user])
|
||||||
# 邮件的主题
|
# 邮件的主题
|
||||||
msg['Subject'] = Header(str(code), 'utf-8').encode()
|
msg['Subject'] = Header(str(code), 'utf-8').encode()
|
||||||
|
|
||||||
|
@ -135,11 +126,11 @@ class sendMsg(APIView):
|
||||||
# 登录服务器,括号中对应的是发件人邮箱账号、邮箱密码
|
# 登录服务器,括号中对应的是发件人邮箱账号、邮箱密码
|
||||||
server.login(my_sender, my_pass)
|
server.login(my_sender, my_pass)
|
||||||
# 发送邮件,括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
# 发送邮件,括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
|
||||||
server.sendmail(my_sender,[u,],msg.as_string())
|
server.sendmail(my_sender,[my_user,],msg.as_string())
|
||||||
Message.objects.filter(mail=u).delete()
|
|
||||||
Message.objects.create(mail=u, msg=code)
|
|
||||||
# 关闭连接
|
# 关闭连接
|
||||||
server.quit()
|
server.quit()
|
||||||
|
Message.objects.filter(mail=my_user).delete()
|
||||||
|
Message.objects.create(mail=my_user, msg=code)
|
||||||
except:
|
except:
|
||||||
return Response('验证码发送失败', status=status.HTTP_400_BAD_REQUEST)
|
return Response('验证码发送失败', status=status.HTTP_400_BAD_REQUEST)
|
||||||
return Response(status=status.HTTP_200_OK)
|
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