2013-03-13 3 views
1

Я пытаюсь отладить представление, которое получает входящую почту от Mailgun к установке Django на Heroku.Отладка 500 на входящей почте на Heroku от Mailgun

Само представление непосредственно берется из документов 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 с помощью внешнего инструмента (я использую плакат для этой цели) я могу получить 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 сначала, очевидно, довольно медленно, следовательно, мне интересно, действительно ли это «умный» способ разработки ... (все остальное, что я, очевидно, проверяю локально, но с внешней электронной почтой, проходящей через POST через Mailgun, я не знаю, как тестировать это локально)

Спасибо!

+0

Как выглядит ваша конфигурация Django? Я сделал небольшой помощник для настройки Sendgrid и/или Mailgun на Heroku прямо из среды: https://github.com/fubaz/djheroku/blob/master/djheroku/conf.py#L77 – ferrix

+0

Также в заголовке говорится о входящая почта и send_mail выглядят как исходящие. – ferrix

+0

Спасибо - send_mail на самом деле был для меня своего рода «уведомляющим сообщением», что все в порядке - я, вероятно, мог бы вместо этого вывести его в файл журнала, просто подумал, что отправка простого сообщения может быть проще. Также - отправка почты работает правильно в других частях системы - следовательно, не уверен, что это проблема среды (ваш файл конфигурации выглядит очень похоже на мой). – Jonas

ответ

2

я наконец понял, что проблема была:

1) в учебнике Mailgun, маршрут создания не имеет «/» в конце (пример: http://myhost.com/messages) - однако, APPEND_SLASH вызвало проблемы для перенаправления POST. Решение состоит в том, чтобы просто добавить «'/' в конец для перенаправления

2) (потенциальная дальнейшая проблема позже в производстве) - обратите внимание, что в Django 1.5 было введено значение allow_host, которое ограничивает домены, которые разрешены для выполнения запросов POST. Я считаю, что это используется только в производственных средах (debug = false), но может вызвать проблемы позже, поэтому убедитесь, что вы также установили их (я полагаю, чтобы mailgun.org был хостом).

Спасибо всем, кто пытался помочь!

Смежные вопросы