首页 > 解决方案 > django 信号不发送邮件

问题描述

我有一个博客,我想在发布新帖子时向我的订阅者发送电子邮件。我使用了 django 信号。我的问题是信号不起作用。当我尝试 django shell 时,我可以发送邮件。

这是我的信号.py文件:

from django.db.models.signals import post_save
from blog.models import Blog
from django.core.mail import send_mail
from django.dispatch import receiver

@receiver(post_save, sender=Blog)
def new_post_created(sender,**kwargs)
    print "Success"
    mysubject = "E mail gönderiyorum"
    mymessage = "Merhaba, \nYeni yazım az önce yayınlandı. Hemen okumak için linki kullanabilirsin.\n http://www.cemreacar.com/blog/"
    mymail = "mail@cemreacar.com"
    send_mail(mysubject,mymessage,mymail,['*****@gmail.com'],'fail_silently=False')

标签: djangodjango-signals

解决方案


您是否覆盖了 ready 方法?如果不是,您必须覆盖应用程序配置类的 ready 方法。

在 apps.py 应用程序配置类将被定义。覆盖ready方法如下

from django.apps import AppConfig
class YourAppConfig(AppConfig):
    name = 'your_app'

    def ready(self):
        import your_app.signal

在项目 settings.py 中更新安装的应用程序如下:

代替

INSTALLED_APPS = (
    '...',
    'your_app',
)

INSTALLED_APPS = (
    '...',
    'your_app.apps.YourAppConfig',
)

文档链接 - https://docs.djangoproject.com/en/3.0/ref/applications/#django.apps.AppConfig.ready


推荐阅读