2016-08-18 2 views
2

私は、SendgridインバウンドWebhookから流星、ピッカー、ボディパーサーで受信メールを解析しようとしています。私は電子メールを受け取りますが、私がリクエストボディを記録すると空のオブジェクトが得られます。何が私はここで行方不明ですか?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)); 
} 

答えて

3

問題はmultipart/form-dataであるコンテンツタイプに関連していました。

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

はそれはとてもbodyParser.json()はそれを正しく解析できない、application/jsonのContent-Typeを持っていないSendGridからの着信コンテンツのように聞こえます。 bodyParser.urlencoded()コールを追加して、application/x-www-form-urlencoded Content-Typeを解析して、それが役立つかどうかを確認してください。したがって、次のようなものがあります。

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

ありがとうございますが、ボディはまだ空です。私はMailgunからテストメールを投稿しようとしましたが、まったく同じ結果が得られました。 – oskare

関連する問題