Skip to content

Commit 69e5ab4

Browse files
committed
[Bugfix] 解决发送邮件重启的问题
1 parent 757a31a commit 69e5ab4

2 files changed

Lines changed: 11 additions & 16 deletions

File tree

apps/common/api.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,13 @@ def post(self, request):
2121
serializer = self.serializer_class(data=request.data)
2222
if serializer.is_valid():
2323
email_host_user = serializer.validated_data["EMAIL_HOST_USER"]
24-
kwargs = {
25-
"host": serializer.validated_data["EMAIL_HOST"],
26-
"port": serializer.validated_data["EMAIL_PORT"],
27-
"username": serializer.validated_data["EMAIL_HOST_USER"],
28-
"password": serializer.validated_data["EMAIL_HOST_PASSWORD"],
29-
"use_ssl": serializer.validated_data["EMAIL_USE_SSL"],
30-
"use_tls": serializer.validated_data["EMAIL_USE_TLS"]
31-
}
32-
connection = get_connection(timeout=5, **kwargs)
24+
for k, v in serializer.validated_data.items():
25+
if k.startswith('EMAIL'):
26+
setattr(settings, k, v)
3327
try:
34-
connection.open()
35-
except Exception as e:
36-
return Response({"error": str(e)}, status=401)
37-
38-
try:
39-
send_mail("Test", "Test smtp setting", email_host_user,
40-
[email_host_user], connection=connection)
28+
subject = "Test"
29+
message = "Test smtp setting"
30+
send_mail(subject, message, email_host_user, [email_host_user])
4131
except Exception as e:
4232
return Response({"error": str(e)}, status=401)
4333

apps/common/tasks.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from django.conf import settings
33
from celery import shared_task
44
from .utils import get_logger
5+
from .models import Setting
56

67

78
logger = get_logger(__file__)
@@ -21,6 +22,10 @@ def send_mail_async(*args, **kwargs):
2122
Example:
2223
send_mail_sync.delay(subject, message, recipient_list, fail_silently=False, html_message=None)
2324
"""
25+
configs = Setting.objects.filter(name__startswith='EMAIL')
26+
for config in configs:
27+
setattr(settings, config.name, config.cleaned_value)
28+
2429
if len(args) == 3:
2530
args = list(args)
2631
args[0] = settings.EMAIL_SUBJECT_PREFIX + args[0]

0 commit comments

Comments
 (0)