Как преобразовать этот JS-код для использования в API Nodejs?

Я хочу использовать свой 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));
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
127
1

Ответы 1

Вы должны использовать 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()

Спасибо! Я меняю ваш код на этот: pastebin.com/Z2kcWTd6 Но я получаю: statusCode: 400 {"requestError":{"serviceException":{"messageId":"BAD_REQUES‌​T","text":"Bad request"}}}

rodrigofbm 30.11.2018 15:08

Надеюсь, вы заменили URL-адрес правильным и не использовали напрямую {base_url} .api.infobip.com, как в вашем примере с pasebin?

Christian Müller 30.11.2018 15:11

Я заменяю его своим URL!

rodrigofbm 30.11.2018 15:13

@ ChristianMüller: 'Experiance'! = 'Experience' && 'espacially'! = 'Особенно' (в Deinem Profil ..);)

iLuvLogix 30.11.2018 15:25

Спасибо, iLuvLogix :) Следующим предложением будет проверить, используете ли вы правильную строку базовой аутентификации. Ваш пример из pastebin выглядит правильным. В конце концов, я хотел бы указать на создание нового вопроса, поскольку это ответ на ваш вопрос, что использовать вместо «XMLHttpRequest» в nodejs? -> Какое использование требует ("https")

Christian Müller 30.11.2018 18:02

Другие вопросы по теме