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

时间:2016-03-21 04:37:55

标签: javascript angularjs node.js nodemailer

这里我在提交表单时发送邮件。一切工作正常,唯一的问题是即使由于错误的身份验证或互联网问题而未发送邮件,用户也会获得成功消息。我希望如果邮件发送失败,用户应该收到错误消息。

  

客户

    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);
}

3 个答案:

答案 0 :(得分:4)

服务器:您可以从服务器创建和发送错误消息

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

}

答案 1 :(得分:1)

您可以设置并发送其他data.emailSent = truedata.emailSent = false作为:

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

在客户端,您可以检查此标记并相应地显示成功或失败。

答案 2 :(得分:1)

感谢Zeeshan Hassan和pooja帮助我,起初我无法访问状态和消息。我刚刚对Pooja的解决方案及其工作进行了一些修改

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