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

标签 python django heroku mailgun

我正在尝试调试一个 View ,该 View 将传入的邮件从 Mailgun 获取到 Heroku 上的 Django 安装。

View 本身直接取自 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) 在 Mailgun 教程中,您创建的路由末尾没有“/”(例如: http://myhost.com/messages ) - 但是,APPEND_SLASH 导致了 POST 重定向出现问题。解决方案是简单地在重定向末尾附加“/”

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

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

关于python - 在 Heroku 上从 Mailgun 传入的邮件上调试 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386071/

相关文章:

python - 收集系数 MPolynomial_libsingular

node.js - 如何配置 Heroku 以使用 gzip 压缩托管文件

ruby-on-rails - Heroku 是否保护个别网站免受 DoS/DDoS 攻击?

python - 为什么我需要将对象传递给此类才能使其工作?

python - 在 Python 中设置 WindowsHook(ctypes,Windows API)

python - Pyqt 两个按钮连接到在标签中设置文本的方法

Django 条件模板继承

django - Tastypie - 允许未经身份验证的用户只读权限,同时允许授权的写入权限

javascript - 无法使用 Python 和 Django 进行 AJAX 调用

ruby-on-rails - 在 mongoid 上进行全文搜索所需的建议