fix :修改发送邮件功能

This commit is contained in:
zty 2024-04-26 17:23:26 +08:00
parent 296d2ed62d
commit 7393961810
5 changed files with 91 additions and 35 deletions

View File

@ -2,7 +2,7 @@ import request from '@/utils/request'
export function sendMsg(data) {
return request({
url: '/system/sendmsg/',
url: '/info/sendmsg/',
method: 'post',
data
})

View File

@ -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())
]

View File

@ -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)

View File

@ -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)

41
server/utils/sedmeg.py Normal file
View File

@ -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'