我有一个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发送了支持消息,但到目前为止他们仍然无法提供帮助。
奇怪的是,如果我在系列之外调用该函数,则会发送电子邮件。如果我在系列中调用该函数但没有附件元素,那么它还会发送电子邮件!
我想知道该系列(我也曾用异步瀑布进行过尝试)处理变量的方式是否基本。