使用带有Celery的Django发送电子邮件时出错

时间:2014-11-28 14:22:12

标签: python django rabbitmq celery

我试图发送电子邮件,如果通过网络服务器执行,下面的工作完全正常。但是,当我尝试将任务发送到Celery时,我总是会收到一个断言错误,告诉我" to"需要成为一个列表或元组。

我不希望通过网络服务器发送电子邮件,因为它会减慢速度,所以如果有人可以帮我解决这个问题,那将非常感激。

from celery import Celery
from django.core.mail import send_mail, EmailMessage

app = Celery('tasks', backend='amqp', broker='amqp://')

@app.task
def send_mail_link():
    subject = 'Thanks'
    message = 'body'
    recipients = ['someemail@gmail.com']
    email = EmailMessage(subject=subject, body=message, from_email='info@example.com', to=recipients)
    email.send()

1 个答案:

答案 0 :(得分:1)

我不是百分之百确定原因,但我做了一些更改,现在它没有任何错误。

我删除了send_mail的导入,并将方法的名称从send_mail_link()更改为send_link()。我也重新启动了Celery工作人员,现在一切正常。

新代码是:

from celery import Celery
from django.core.mail import EmailMessage

app = Celery('tasks', backend='amqp', broker='amqp://')

@app.task
def send_link():
    subject = 'Thanks'
    message = 'body'
    recipients = ['someemail@gmail.com']
    email = EmailMessage(subject=subject, body=message, from_email='info@example.com', to=recipients)
    email.send()

希望将来有人可能会觉得这很有帮助。