从Mailgun调试Heroku上的传入邮件500

时间:2013-03-13 12:59:43

标签: python django heroku mailgun

我正在尝试调试一个视图,它将来自Mailgun的传入邮件发送到Heroku上的Django安装。

视图本身直接来自Mailgun文档,如果我手动调用该URL,那么我会得到一个OK响应。

@csrf_exempt
def askfriend_emailresponse(request):
    from_email = "..."
    to_email = "..."
    if request.method == 'POST':
        sender    = request.POST.get('sender')
        recipient = request.POST.get('recipient')
        answer = request.POST.get('stripped-text', '')

        try:
            send_mail("inside post"+str(recipient[recipient.find("+")+1:recipient.find("@")]), answer, from_email, to_email)
        except Exception, e:
            raise e

    return HttpResponse('OK')

另外,如果我只是通过外部工具将帖子发布到该URL(我为此目的使用了Poster),我可以得到200(我必须为此添加@csrf_exempt,但这样做很好现在)。

但是,从Mailgun日志中我看到转发邮件时出现500错误,而且从Heroku我看到有一个传入请求导致500:

2013-03-13T09:59:04+00:00 heroku[router]: at=info method=POST path=[url] host=[hostname].herokuapp.com fwd="198.61.253.112" dyno=web.1 queue=0 wait=0ms connect=1ms service=86ms status=500 bytes=102194

经过一天多的研究后我的问题:

1)任何想法可能是错的(会很好) - 至少同样重要

2)我该如何正确测试?因为Mailguns日志非常简短(500 - 就是它!)而Heroku也没有真正帮助那里......而且,必须始终首先部署到Heroku显然是非常慢的,因此,我想知道这是否真的是开发的“聪明”方式......(我明显在本地测试的所有其他东西,但通过Mailgun通过POST发送外部电子邮件,我不知道如何在本地测试)

谢谢!

1 个答案:

答案 0 :(得分:2)

我终于弄清楚问题是什么:

1)在Mailgun教程中,您创建的路径最后没有'/'(例如:http://myhost.com/messages) - 但是,APPEND_SLASH导致POST重定向出现问题。解决方案是简单地在末尾追加“/”以进行重定向

2)(生产中可能会有进一步的问题) - 请注意,在Django 1.5中引入了allowed_host值,该值限制了允许发出POST请求的域。我相信这只在生产环境中使用(debug = false),但可能会导致以后出现问题,所以请确保相应地设置这些问题(我相信允许mailgun.org作为主机)。

感谢所有试图提供帮助的人!