无法将nodemailer错误响应从node.js发送到angular.js

在这里,当表单提交时,我正在发送邮件。 一切工作正常,唯一的问题是即使邮件没有发送,因为错误的authentication或互联网问题,用户正在得到成功的消息。 我希望如果邮件发送失败,用户应该得到一个错误消息。

客户

this.mail= function() { var data = ({ name :this.name, email :this.email }) //Post Request $http({ method: 'POST', url: '/contact2', data }).then(function successCallback(response) { $mdToast.show( $mdToast.simple() .textContent('Thanks for your message '+data.name) .position($scope.getToastPosition()) .hideDelay(5000) ); }, function errorCallback(response) { $mdToast.show( $mdToast.simple() .textContent('Something went wrong, Please TRY AGAIN '+data.name) .position($scope.getToastPosition()) .hideDelay(5000) ); }); }); 

服务器

 function send(req, res) { console.log(req.body); var data= req.body smtpTransport.sendMail({ from: "<email@gmail.com>", to: data.email, subject: "Website Submission from "+data.name, text: 'You have a new submission with the following details..., }, function(error, response){ //callback if(error){ console.log(error); }if{ console.log(" Message sent "+data.name); } smtpTransport.close(); }); res.json(data); } 

服务器:您可以创build并从服务器发送错误消息

 if(error){ res.json({ Status : false, message : error }) }else{ res.json({ Status : true, message : 'Success' }) } 

客户端:在这里你可以捕捉它

 function successCallback(response) { if(response.Status){ console.log(response.message); }// for success else{ console.log(response.message) } //for error 

}

您可以设置和发送额外的data.emailSent = truedata.emailSent = false为:

 if(error){ data.emailSent = false; } else{ data.emailSent = true; } 

在客户端上,您可以检查这个标志,并相应地显示成功或失败。

感谢Zeeshan Hassan和pooja帮助我,最初我无法获得状态和消息。 我只是对Pooja的解决scheme及其工作进行了一些改动

 function successCallback(response) { console.log(response.data.Status); if (response.data.Status){console.log(response.data.message);} ` `else{ console.log(response.data.message) }