发送带有附件的电子邮件作为异步系列的一部分时出现Mailgun错误

时间:2019-03-21 08:36:04

标签: node.js mailgun async.js

我有一个NodeJs应用程序,它运行各种任务,但是其中之一是生成报告并将其通过电子邮件发送给我的客户。我正在使用Mailgun发送电子邮件,并且在我的代码中的其他地方发送电子邮件都没有问题。

由于需要将报告生成到一个可能很长的CSV文件中,然后将其附加到电子邮件中,因此我将它们写入了一个异步系列。

问题是当我把所有东西放在一起时,我从Mailgun收到一条错误消息

{ message: '\'from\' parameter is missing' }

我的代码非常简单,如下所示

async.series([
    function(callback) {
        User.find({}, function(err, foundUsers){
            if(err) {
                console.log(err);
            } else {
                User.csvReadStream(foundUsers)
                    .pipe(fs.createWriteStream('dailyReport.csv'));
                callback(null, 'Created Report');
            }
        });
    },
    function(callback) {
        sendReport();
        callback(null, 'Sent Email');
    }
],
function(err, results) {
    console.log(results);
});

此处具有功能

function sendReport () {
var filepath = path.join(__dirname, '../', 'dailyReport.csv');
var data = {
    from: "mailgun@myemail.co.uk",
    to: 'me@myemail.co.uk',
    subject: 'Daily Report',
    text: 'Daily CSV report from ...',
    attachment: filepath
};
console.log(data);
mg.messages().send(data, function (error, body) {
    console.log(body);
});
console.log("Report Sent");
return;
}

我已经向Mailgun发送了支持消息,但到目前为止他们仍然无法提供帮助。

奇怪的是,如果我在系列之外调用该函数,则会发送电子邮件。如果我在系列中调用该函数但没有附件元素,那么它还会发送电子邮件!

我想知道该系列(我也曾用异步瀑布进行过尝试)处理变量的方式是否基本。

0 个答案:

没有答案