diff --git a/DjangoBlog/admin_site.py b/DjangoBlog/admin_site.py index b0fb2a1..acf4fa3 100644 --- a/DjangoBlog/admin_site.py +++ b/DjangoBlog/admin_site.py @@ -53,6 +53,7 @@ admin_site.register(SideBar, SideBarAdmin) admin_site.register(BlogSettings, BlogSettingsAdmin) admin_site.register(commands, CommandsAdmin) +admin_site.register(EmailSendLog, EmailSendLogAdmin) admin_site.register(BlogUser, BlogUserAdmin) diff --git a/DjangoBlog/utils.py b/DjangoBlog/utils.py index d456caf..6b4815d 100644 --- a/DjangoBlog/utils.py +++ b/DjangoBlog/utils.py @@ -148,7 +148,23 @@ class CommonMarkdown(): def send_email(emailto, title, content): msg = EmailMultiAlternatives(title, content, from_email=settings.DEFAULT_FROM_EMAIL, to=emailto) msg.content_subtype = "html" - _thread.start_new_thread(msg.send, (msg,)) + + def sendmsg_withlog(): + from servermanager.models import EmailSendLog + log = EmailSendLog() + log.title = title + log.content = content + log.emailto = ','.join(emailto) + + try: + result = msg.send() + log.send_result = result > 0 + except Exception as e: + logger.error(e) + log.send_result = False + log.save() + + _thread.start_new_thread(sendmsg_withlog, ()) def parse_dict_to_url(dict): diff --git a/blog/models.py b/blog/models.py index 35e649b..75c02e7 100644 --- a/blog/models.py +++ b/blog/models.py @@ -261,6 +261,6 @@ class BlogSettings(models.Model): raise ValidationError(_('只能有一个配置')) def save(self, *args, **kwargs): + super().save(*args, **kwargs) from DjangoBlog.utils import cache cache.clear() - super().save(*args, **kwargs) diff --git a/servermanager/admin.py b/servermanager/admin.py index f710673..5bff77f 100644 --- a/servermanager/admin.py +++ b/servermanager/admin.py @@ -1,10 +1,18 @@ from django.contrib import admin # Register your models here. -from .models import commands +from .models import commands, EmailSendLog class CommandsAdmin(admin.ModelAdmin): list_display = ('title', 'command', 'describe') -admin.site.register(commands, CommandsAdmin) +class EmailSendLogAdmin(admin.ModelAdmin): + list_display = ('title', 'emailto', 'send_result', 'created_time') + readonly_fields = ('title', 'emailto', 'send_result', 'created_time', 'content') + + def has_add_permission(self, request): + return False + + def has_module_permission(self, request): + return False diff --git a/servermanager/models.py b/servermanager/models.py index be3f407..7c99e17 100644 --- a/servermanager/models.py +++ b/servermanager/models.py @@ -15,3 +15,18 @@ class commands(models.Model): class Meta: verbose_name = '命令' verbose_name_plural = verbose_name + + +class EmailSendLog(models.Model): + emailto = models.CharField('收件人', max_length=300) + title = models.CharField('邮件标题', max_length=2000) + content = models.TextField('邮件内容') + send_result = models.BooleanField('结果', default=False) + created_time = models.DateTimeField('创建时间', auto_now_add=True) + + def __str__(self): + return self.title + + class Meta: + verbose_name = '邮件发送log' + verbose_name_plural = verbose_name