首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还有人使用托管在Heroku上的Amazon-SES从Django应用程序发送带有芹菜任务的电子邮件吗?

还有人使用托管在Heroku上的Amazon-SES从Django应用程序发送带有芹菜任务的电子邮件吗?
EN

Stack Overflow用户
提问于 2013-05-01 05:36:23
回答 1查看 1.5K关注 0票数 1

我知道这是有效的,因为我有django-registrations应用程序发送激活电子邮件。但我没有运气为另一个应用程序重新创建此功能。在views.py中,在add_article函数中,我执行芹菜任务send_published_article.delay(request.user.email,(主体),该任务在本地工作。但是当我部署到Heroku时,当我将is_published设置为true时,不会发送任何电子邮件。没有生成错误,所以我不确定从哪里开始查找。

Heroku日志显示了尝试发送电子邮件失败的原因POST: 2013-04-30T20:57:55.650246+00:00 Heroku路由器: at=info method=POST path=/story/add/文章host=secure-brook-2084.herokuapp.com fwd="108.167.16.106“dyno=web.1 connect=0ms service=265ms status=302 bytes=5

tasks.py

代码语言:javascript
复制
from django.core.mail import send_mail
from celery import task
from apps.profiles.models import Client

@task(name='send-email')
def send_published_article(sender, subject, body):
    for client in Client.objects.all():
        recipient = client.email
        send_mail(subject, body, sender, [recipient], fail_silently=False)

views.py

代码语言:javascript
复制
import os
import redis
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.shortcuts import redirect, render_to_response
from django.template import RequestContext
from models import Article
from forms import ArticleForm
from story.tasks import send_published_article

@login_required 
def add_article(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST, request.FILES or None)
        if form.is_valid():
            article = form.save(commit=False)
            article.author = request.user
            article.save()
            msg = "Article saved successfully"
            messages.success(request, msg, fail_silently=True)
            if article.is_published:
                subject = article.title
                body = article.text
                send_published_article.delay(request.user.email, subject, body)
                msg = "Article saved and published successfully"
                messages.success(request, msg, fail_silently=True)
            return redirect(article)
    else:
        form = ArticleForm()
    return render_to_response('story/article_form.html', 
                              { 'form': form },
                              context_instance=RequestContext(request))

我在我的settings.production中设置了如下设置:

代码语言:javascript
复制
EMAIL_BACKEND = 'django_ses.SESBackend'
DEFAULT_FROM_EMAIL = 'ME <my.email@email.com>'

如果您需要更多信息,或者在测试中有帮助找到bug的想法,请让我知道。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 21:52:14

这个问题的解决方法很简单,我都想哭了。我没有在我的Heroku应用中启用celeryd和celerybeat dynos。打开它们,申请更改,然后轰隆,电子邮件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16309355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档