我正在使用Koa和Node 0.11构建一个简单的服务器。我希望当用户从我的网站提交查询时,会向我发送一封电子邮件。当然,如果电子邮件由于某种原因无法发送,我想提醒用户,但我不确定等待"等等的最佳方式。要做到这一点。
我的相关服务器代码非常简单:
app.put('/inquiry', function *() {
var status = yield sendEmail('test', "my message", "me@mysite" );
this.body = status;
});
function sendEmail(subject, message, to) {
var fromEmail = 'you@yoursite.com';
var tags = ['subject'];
var to = {email: to};
return function() {
mandrill('/messages/send',
{
message: {
"from_email":fromEmail,
"to":[to],
"text":message,
"tags":tags
}
},
function (error, response) {
if (error) {
console.log(JSON.stringify(error));
return error;
}
else {
console.log("Mandrill result: "+response);
return response;
}
};
);
};
};
我遇到的问题是Mandrill.send()函数没有返回任何内容,而且我不确定最好的做法是什么。
答案 0 :(得分:1)
你只需要将它包装在一个像这样的匿名函数中:
function sendEmail(subject, message) {
var fromEmail = 'test@elliottregan.com';
var tags = ['subject'];
var to = {email:'oatmealsnap@gmail.com'};
return function(callback) {
mandrill('/messages/send', {
message: {
"from_email":fromEmail,
"to":[to],
"text":message,
"tags":tags
}
},
function (error, response) {
if (error) {
console.log(JSON.stringify(error));
return error;
}
else {
console.log("Mandrill result: "+response);
callback(null, response);
}
}
)}
};