以下是我从Angular 2应用程序发出的Express API调用中收到响应的方法。在我的组件中:
this.emailService.sendEmail(this.name, this.email, this.message)
.subscribe(
(res) => {
console.log("Success");
this.success = true;
},
(err) => {
console.log("Failure");
this.success = false;
}
);
在我的电子邮件服务sendEmail()函数中:
return this.http.post('/api/sendemail', data)
.map(res => res.json());
在我的Express API中,我发送电子邮件并使用emailjs节点模块发送响应:
router.post('/sendemail/', (req, res) => {
...
server.send({
text: "Sent from " + req.body.name + " message: " + req.body.message + " reply to: " + req.body.email,
from: "email@gmail.com",
to: "email@gmail.com",
subject: "test"
}, function(err, message) {
if (err) {
console.log(err);
res.status(500).send("Email failed to send.");
} else if (message) {
console.log(message);
res.status(200).send("Email sent successfully.");
}
});
});
每次都成功发送电子邮件,并返回200状态代码(我在控制台和Heroku控制台中看到响应),但控制台记录"失败"而不管。我是否正确地将回复发送回我的申请表?
答案 0 :(得分:1)
变化:
res.status(200).send("Email sent successfully.");
要:
res.status(200).send({message: "Email sent successfully."});
或
res.status(200).json({message: "Email sent successfully."});
或
res.status(200);
答案 1 :(得分:0)
尝试这样的事情。
{{1}}