From 94186988a15cc3fa269470784a523b8227ce3405 Mon Sep 17 00:00:00 2001 From: liangliang Date: Fri, 21 Sep 2018 23:33:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAsignal=20=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/blog_signals.py | 31 +++++++++++++++++++++++++++-- DjangoBlog/utils.py | 40 ++++++++++++++++++++------------------ oauth/views.py | 6 +----- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/DjangoBlog/blog_signals.py b/DjangoBlog/blog_signals.py index 21dadc2..061d9d9 100644 --- a/DjangoBlog/blog_signals.py +++ b/DjangoBlog/blog_signals.py @@ -20,6 +20,8 @@ from DjangoBlog.utils import cache, send_email, expire_view_cache, get_blog_sett from DjangoBlog.spider_notify import SpiderNotify from django.contrib.sites.models import Site from oauth.models import OAuthUser +from django.core.mail import EmailMultiAlternatives + import logging logger = logging.getLogger(__name__) @@ -28,6 +30,31 @@ comment_save_signal = django.dispatch.Signal(providing_args=["comment_id", "user article_save_signal = django.dispatch.Signal(providing_args=['id', 'is_update_views']) user_login_logout_signal = django.dispatch.Signal(providing_args=['id', 'type']) oauth_user_login_signal = django.dispatch.Signal(providing_args=['id']) +send_email_signal = django.dispatch.Signal(providing_args=['emailto', 'title', 'content']) + + +@receiver(send_email_signal) +def send_email_callback(sender, **kwargs): + emailto = kwargs['emailto'] + title = kwargs['title'] + content = kwargs['content'] + + msg = EmailMultiAlternatives(title, content, from_email=settings.DEFAULT_FROM_EMAIL, to=emailto) + msg.content_subtype = "html" + + 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() @receiver(oauth_user_login_signal) @@ -75,8 +102,8 @@ def comment_save_callback(sender, **kwargs): comment = Comment.objects.get(id=kwargs['comment_id']) site = Site.objects.get_current().domain article = comment.article - if not settings.DEBUG: - + # if not settings.DEBUG: + if True: subject = '感谢您发表的评论' article_url = "https://{site}{path}".format(site=site, path=comment.article.get_absolute_url()) html_content = """ diff --git a/DjangoBlog/utils.py b/DjangoBlog/utils.py index 19d2407..8b9167b 100644 --- a/DjangoBlog/utils.py +++ b/DjangoBlog/utils.py @@ -150,25 +150,27 @@ class CommonMarkdown(): def send_email(emailto, title, content): - msg = EmailMultiAlternatives(title, content, from_email=settings.DEFAULT_FROM_EMAIL, to=emailto) - msg.content_subtype = "html" - - 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, ()) + from DjangoBlog.blog_signals import send_email_signal + send_email_signal.send(send_email.__class__, emailto=emailto, title=title, content=content) + # msg = EmailMultiAlternatives(title, content, from_email=settings.DEFAULT_FROM_EMAIL, to=emailto) + # msg.content_subtype = "html" + # + # 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/oauth/views.py b/oauth/views.py index d48f4fc..c399255 100644 --- a/oauth/views.py +++ b/oauth/views.py @@ -111,13 +111,9 @@ def emailconfirm(request, id, sign): if result[1]: author.username = oauthuser.nikename author.save() - """ - if oauthuser.email and author.email: - login(request, author) - return HttpResponseRedirect('/') - """ oauthuser.author = author oauthuser.save() + oauth_user_login_signal.send(sender=emailconfirm.__class__, id=oauthuser.id) login(request, author) site = Site.objects.get_current().domain