1

アクティベーションメールを送信するdjango-registrationsアプリがあるため、これが機能することはわかっています。しかし、別のアプリ用にこの機能を再作成することはできません。views.py の add_article 関数で、セロリ タスク send_published_article.delay(request.user.email, subject, body) を実行すると、ローカルで動作します。しかし、Heroku にデプロイするときに、is_published を true に設定するとメールが送信されません。エラーは生成されないため、どこから調べればよいかわかりません。

Heroku のログは、POST への電子メール送信に失敗したことを示しています: 2013-04-30T20:57:55.650246+00:00 2084.herokuapp.com fwd="108.167.16.106" dyno=web.1 接続=0ms サービス=265ms ステータス=302 バイト=5

タスク.py

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)

ビュー.py

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で設定を次のように設定しました:

EMAIL_BACKEND = 'django_ses.SESBackend'
DEFAULT_FROM_EMAIL = 'ME <my.email@email.com>'

さらに情報が必要な場合、またはバグを見つけるのに役立つテストについてのアイデアがある場合は、お知らせください。

ありがとう、

4

1 に答える 1