2016-08-18 1 views
2

J'essaie d'analyser les e-mails entrants provenant du Webhook Sendgrid Inbound avec Meteor, Picker et Body-Parser. Je reçois les courriels, mais lorsque je me connecte au corps de la requête, j'obtiens un objet vide. Qu'est-ce que j'oublie ici??Analyse des e-mails entrants provenant de Sendgrid

var bodyParser = require('body-parser');; 

Picker.middleware(bodyParser.json()); 

Picker.route('/incoming/', function(params, req, res, next) { 
    console.log("Body: " + JSON.stringify(req.body)); 
} 

Répondre

3

Le problème était lié au type de contenu étant multipart/form-data. Il a fonctionné comme ceci:

var multiparty = require('multiparty'); 
var bodyParser = Npm.require('body-parser'); 

Picker.middleware(bodyParser.urlencoded({ extended: true })); 
Picker.middleware(bodyParser.json()); 

Picker.route('/incoming/', function(params, req, res, next) { 
    var form = new multiparty.Form(); 
    form.parse(req, function(err, fields, files) { 
    console.log("Heureka: " + JSON.stringify(fields) + JSON.stringify(files)); 
    res.writeHead(200, {'content-type': 'text/plain'}); 
    res.write('received upload:\n\n'); 
    res.end("thanks"); 
    }); 
}); 
0

Il semble que le contenu entrant de SendGrid ne dispose pas d'un application/json Content-Type, donc bodyParser.json() ne peut pas analyser correctement. Essayez également d'ajouter un appel bodyParser.urlencoded(), pour essayer d'analyser un type de contenu application/x-www-form-urlencoded, pour voir si cela vous aide. Donc quelque chose comme:

var bodyParser = require('body-parser'); 

Picker.middleware(bodyParser.json()); 
Picker.middleware(bodyParser.urlencoded({ extended: false })); 

Picker.route('/incoming/', function(params, req, res, next) { 
    console.log("Body: " + JSON.stringify(req.body)); 
} 
+0

Merci, mais le corps est toujours vide. J'ai essayé de poster un mail de test depuis Mailgun et d'obtenir exactement le même résultat (un grand objet json avec tout ce que l'on pourrait attendre mais avec un corps vide). – oskare