-2

在某些情况下,我想使用我的 api 发送电子邮件,服务 (infobip) 文档在 JS 中显示了一个示例,但它在我的带有 nodejs 和 expressjs 的 api 中不起作用。有人能帮我吗?

/*----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 <from@example.com>',
    'to': 'recipient1@example.com',
    '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.log(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));
4

1 回答 1

0

您应该使用来自 nodejs 的 https。

这是一个入门的示例代码。对于 infopib,它似乎是很正常的 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.log(`statusCode: ${res.statusCode}`)

  res.on('data', (d) => {
    process.stdout.write(d)
  })
})

req.on('error', (error) => {
  console.error(error)
})

req.write(data)
req.end()
于 2018-11-30T13:34:19.107 回答