Как получить сообщение через POST от Mailgun в NodeJS? - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь настроить конечную точку API для сообщений, которые пересылаются из mailgun.

В своем документе у них есть пример кода Django, который выглядит следующим образом:

# Handler for HTTP POST to http://myhost.com/messages for the route defined above
def on_incoming_message(request):
     if request.method == 'POST':
         sender    = request.POST.get('sender')
         recipient = request.POST.get('recipient')
         subject   = request.POST.get('subject', '')

         body_plain = request.POST.get('body-plain', '')
         body_without_quotes = request.POST.get('stripped-text', '')
         # note: other MIME headers are also posted here...

         # attachments:
         for key in request.FILES:
             file = request.FILES[key]
             # do something with the file

     # Returned text is ignored but HTTP status code matters:
     # Mailgun wants to see 2xx, otherwise it will make another attempt in 5 minutes
     return HttpResponse('OK')

Сейчасв моем приложении Express я получил этот фрагмент кода:

const express = require('express');
const router = express.Router();

// @route   POST api/inbox
// @desc    HTTP handler for messages from mailgun
// @access  public
router.post('/',(req, res) => {
    console.log("REQ PARAMS: ");
    console.log(req.params);
    console.log("REQ BODY: ");
    console.log(req.body);
    console.log("REQ JSON: ");
    console.log(JSON.stringify(req.body));
    const sender = req.body.sender;
    const recipient = req.body.recipient;

    console.log(sender);
    console.log(recipient);

    res.json({success: true});
});


module.exports = router;

Это развернуто на Heroku, и я получаю следующие выходные данные, когда mailgun попадает в маршрут:

2019-10-03T09:29:39.558514+00:00 app[web.1]: REQ PARAMS:
2019-10-03T09:29:39.558515+00:00 app[web.1]: {}
2019-10-03T09:29:39.558516+00:00 app[web.1]: REQ BODY:
2019-10-03T09:29:39.558518+00:00 app[web.1]: {}
2019-10-03T09:29:39.558519+00:00 app[web.1]: REQ JSON:
2019-10-03T09:29:39.558521+00:00 app[web.1]: {}
2019-10-03T09:29:39.558522+00:00 app[web.1]: undefined
2019-10-03T09:29:39.558524+00:00 app[web.1]: undefined

Я не могу понятьчто я делаю не так, поэтому я рад любой помощи!

1 Ответ

0 голосов
/ 03 октября 2019

Проблема заключалась в том, что я использовал промежуточное ПО body-parser вместо

app.use(express.urlencoded());

Мой плохой ...

...