使用EmailMultiAlternatives的Celery错误

 mobiledu2502934573 发布于 2023-01-30 08:41

我有一个包装周围EmailMultiAlternatives使界面有点清洁(从几乎逐字这里):

class Email(object):
    '''
    Wrapper around the Django core's EmailMultiAlternatives that makes it simpler
    to render txt and html templates.
    '''

    def __init__(self, to, subject):
        self.to = to
        self.subject = subject
        self.html = None
        self.text = None

    def _render(self, template, context):
        return render_to_string(template, context)

    def render_html(self, template, context):
        self.html = self._render(template, context)

    def render_text(self, template, context):
        self.text = self._render(template, context)

    def send(self, from_addr=None, fail_silently=False):
        if isinstance(self.to, basestring):
            self.to = [self.to]
        if not from_addr:
            from_addr = settings.EMAIL_HOST_USER
        msg = EmailMultiAlternatives(
            self.subject,
            self.text,
            from_addr,
            self.to
        )
        if self.html:
            msg.attach_alternative(self.html, 'text/html')
        msg.send(fail_silently)

我称之为:

   if not self.email:
        warnings.warn('uid:%s has no email address' % self.id)
    else:
        context = Context({
            'first_name': self.first_name,
            'uid': int_to_base36(self.id),
            'token': default_token_generator.make_token(self),
            'domain': Site.objects.get_current().domain
        })

        from_email = settings.EMAIL_HOST_USER
        subject = "Password Reset"
        email = Email(to=self.email, subject=subject)
        email.render_text('email/reset_password_email.txt', context)
        email.render_html('email/reset_password_email.html', context)
        email.send()

我正在使用django-celery-email,它简单地提供了一个围绕Django的内置发送电子邮件功能的包装器,将其变成芹菜工作者任务.但是,当我尝试运行代码时,我收到以下错误:

TypeError:  is not JSON serializable

这发生在创建芹菜任务的上下文中.我不确定这里发生了什么.当我不使用EmailMultiAlternatives并简单地使用Django内置的send_mail(它也被django-celery-email包装为芹菜任务)时,我没有收到错误.思考?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有