Я сделал это работает, текущий код выглядит следующим образом:
helpers.sendRequest = function(protocol, port, hostname, method, path,
contentType, auth, timeoutSeconds, postData, callback){
var stringPayload = querystring.stringify(postData);
// Construct the request
var requestDetails = {
'hostname' : hostname,
'port': port,
'method' : method,
'timeout' : timeoutSeconds * 1000,
'path' : path
};
// Instantiate the request object (using either the http or https module)
var _moduleToUse = protocol == 'http' ? http : https;
var req = _moduleToUse.request(requestDetails, function(res){
res.on('data', (d) => {
if(res.statusCode == 200){
callback(false);
}else{
console.log(res.statusCode);
callback(true);
}
});
});
req.setHeader('Authorization', auth);
req.setHeader('Content-Type', contentType);
req.setHeader('Content-Length', Buffer.byteLength(stringPayload));
// Add the payload
req.write(stringPayload);
// Bind to the error event so it doesn't get thrown
req.on('error',function(e){
console.log(e);
callback(true, {'Error': e});
});
// Bind to the timeout event
req.on('timeout',function(){
console.log('timeout');
callback(true, {'Error': 'The request took much time and got timeout.'})
});
// End the request
req.end();
};
И я называю метод следующим образом:
genericHelper.sendRequest('https', '443', 'api.mailgun.net', 'POST', '/v3/sandbox0630029a67f24517a9c3e383d2c6098e.mailgun.org/messages',
'application/x-www-form-urlencoded', ('Basic ' + Buffer.from(('api:'+ config.mailgun.ApiKeyTest)).toString('base64')), 5, emailRequestObject, function(err, data){
// Here I do what I need after sending the http request with success
});
Я надеюсь, что это кому-то поможет, поэтому проблема заключалась в типе контента, мне пришлось изменить его на «application / x-www-form-urlencoded», а затем авторизацию, которую мне пришлось преобразовать в Base64 и включить Basic перед парой в base64.