Я хочу использовать свой api для отправки электронной почты в некоторых случаях, документы службы (infobip) показывают пример на JS, но он не работает в моем api с nodejs и expressjs. Кто-нибудь может мне помочь?
/*----Sending fully featured email----*/
function createFormData(data) {
var formData = new FormData();
for (var key in data) {
formData.append(key, data[key]);
}
return formData;
}
//Dummy File Object
var file = new File([""], "filename");
var data = {
'from': 'Sender Name <[email protected]>',
'to': '[email protected]',
'subject': 'Test Subject',
'html': '<h1>Html body</h1><p>Rich HTML message body.</p>',
'text': 'Sample Email Body',
'attachment': file,
'intermediateReport': 'true',
'notifyUrl': 'https://www.example.com/email/advanced'
};
var xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.info(this.responseText);
}
});
xhr.open('POST', 'https://{base_url}.infobip.com/email/1/send', false);
xhr.setRequestHeader('authorization', 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==');
xhr.setRequestHeader('accept', 'application/json');
xhr.send(createFormData(data));



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны использовать https из nodejs.
Вот пример кода для начала работы. Для инфопиба вроде так нормальный Post запрос.
Я пытался создать учетную запись на этой странице, но, похоже, регистрация может быть завершена только после продажи. Так что я не смог привести рабочий пример ...
Вот почему я могу привести только общий пример того, как сделать вызов https POST, который должен стать хорошей отправной точкой для разработки вашего решения:
const https = require('https')
const data = JSON.stringify({
todo: 'Buy the milk'
})
const options = {
hostname: 'yourURL.com',
port: 443,
path: '/todos',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length
}
}
const req = https.request(options, (res) => {
console.info(`statusCode: ${res.statusCode}`)
res.on('data', (d) => {
process.stdout.write(d)
})
})
req.on('error', (error) => {
console.error(error)
})
req.write(data)
req.end()
Надеюсь, вы заменили URL-адрес правильным и не использовали напрямую {base_url} .api.infobip.com, как в вашем примере с pasebin?
Я заменяю его своим URL!
@ ChristianMüller: 'Experiance'! = 'Experience' && 'espacially'! = 'Особенно' (в Deinem Profil ..);)
Спасибо, iLuvLogix :) Следующим предложением будет проверить, используете ли вы правильную строку базовой аутентификации. Ваш пример из pastebin выглядит правильным. В конце концов, я хотел бы указать на создание нового вопроса, поскольку это ответ на ваш вопрос, что использовать вместо «XMLHttpRequest» в nodejs? -> Какое использование требует ("https")
Спасибо! Я меняю ваш код на этот: pastebin.com/Z2kcWTd6 Но я получаю:
statusCode: 400 {"requestError":{"serviceException":{"messageId":"BAD_REQUEST","text":"Bad request"}}}