node.js按请求模块发送

时间:2017-04-13 09:00:12

标签: node.js node-modules

我需要发送很多消息。我使用外部api和请求模块:

email.js

var request = require('request');

module.exports = function(subject, email){
    var message = ... ;
    var options = { 
        method: 'POST',
        url: 'https://api.emails.net.com/api/sendmail',
        form: {
            smtp_account: smtp,
            to: {},
            subject: subject,
            html: message,
            from: 'myapp@email.com',
            from_name: 'Myapp'
        },
        headers: {
            'Authorization': ' ... '
        }
    };

    request(options, function (error, response) {
        if (!error && response.statusCode === 200) return true;
        return false;
    });
};

在另一个地方:

var sendEmail = require('../email');

...

for( ... ){
    if(sendEmail(subject, email)){
        //do something
    }
}

成功后,我想做点什么,但要求什么都不返回。有没有办法检查帖子是否成功并在我需要电子邮件模块的地方做些什么?我在循环中发送电子邮件,我必须逐个检查。

1 个答案:

答案 0 :(得分:1)

你可以做这样的事情

var request = require('request');
var Promise = require('bluebird');

var email = function () {
    return {
        send: function (subject, email) {
            var message = "test";
            var options = {
                method: 'POST',
                url: 'https://api.emails.net.com/api/sendmail',
                form: {
                    smtp_account: "smtp",
                    to: {},
                    subject: subject,
                    html: message,
                    from: 'myapp@email.com',
                    from_name: 'Myapp'
                },
                headers: {
                    'Authorization': ""
                }
            };
            return new Promise(function (resolve, reject) {
                request(options, function (error, response) {

                    if (!error && response.statusCode === 200) {
                        resolve(true);
                    } else {
                        reject(err);
                    }
                });
            })
        }
    }
};

module.exports = email();

然后您可以使用以下

for (var i = 0; i < 10; i++) {
            console.log(i);
    email
        .send("test", "test@gmail.com")
        .then(function (status) {
            ///Do what ever u want to do
        })
        .catch(function (err) {
            console.log(err);
        });

}