2016-08-18 4 views
2

Meteor, Picker 및 Body-Parser를 사용하여 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가되는 content-type과 관련이 있습니다. 다음과 같이 작동합니다.

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 콘텐츠 형식이없는 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에서 테스트 메일을 올리려고 시도하고 똑같은 결과를 얻으려고 시도했습니다. (빈 몸으로 예상되는 모든 물건을 가진 큰 json 오브젝트). – oskare

관련 문제