2016-08-18 2 views
2

Ich versuche, eingehende E-Mails vom Sendgrid Inbound Webhook mit Meteor, Picker und Body-Parser zu analysieren. Ich bekomme die E-Mails, aber wenn ich den Anfragetext protokolliere, bekomme ich ein leeres Objekt. Was vermisse ich hier?Eingehende E-Mails von Sendgrid analysieren

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

Picker.middleware(bodyParser.json()); 

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

Antwort

3

Das Problem wurde mit dem Content-Typ als Multipart/Form-Daten verwandt. So funktioniert es:

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

Es klingt wie die eingehenden Inhalte von SendGrid keine application/json Content-Type, so bodyParser.json() es nicht richtig analysieren kann. Versuchen Sie auch, einen Aufruf hinzuzufügen, um zu versuchen, einen application/x-www-form-urlencoded Inhaltstyp zu analysieren, um zu sehen, ob das hilft. So etwas wie:

+0

Danke, aber der Körper ist immer noch leer. Ich habe versucht, eine Testmail von Mailgun zu posten und das exakt gleiche Ergebnis zu erhalten (ein großes json-Objekt mit allem, was man erwarten würde, aber mit einem leeren Körper). – oskare