联系表单应该发送电子邮件,但是console.log显示404错误,尽管数据是可见的。 Node.Js / Express和Angular:但是我使用带有角度的UI路由器......会导致冲突吗?
角。 app.js
app.controller("emailForm", ['$scope', '$http', function ($scope, $http) {
$scope.user = {test: 1};
$scope.processForm = function(user) {
console.log('Im in the controller');
$http({
method : 'POST',
url : '/send',
data : $scope.user,
dataType : "json",
headers : { 'Content-Type': 'application/json' },
});
}
}]);
快递app.js:
app.post('/send',function(req,res){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'aeoneon@gmail.com',
pass: '*****'
}
});
var emailBody = '<div>Name: ' + req.user.name + '</div>' +
'<div>Email: ' + req.user.email + '</div>' +
'<div>Phone: ' + req.user.phone + '</div>' +
'<div>Message: ' + req.user.message + '</div>' +
'<div>Date: ' + (new Date()).toString() + '</div>';
var mailOptions = {
From: 'aeoneon@gmail.com',
To: 'will@bluenightphoto.com',
subject: 'Contact from website',
html: 'emailBody'
};
console.log(mailOptions);
transporter.sendMail(mailOptions, function (error, info){
if(error){
console.log(error);
}else{
console.log('Message sent: ' + info.response);
}
});
});
});
});
形式:
<form ng-controller="emailForm" ng-submit='processForm(user)' >
Name: <br><input type="text" ng-model="user.name" /><br><br>
E-mail: <br><input type="email" ng-model="user.email" /><br><br>
Phone:<br> <input type="tel" ng-model="user.phone" /><br><br>
Message: <br><textarea rows="4" cols="50" ng-model="user.message"> </textarea><br><br>
{{user.phone}}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" ng-disabled="my_form.$invalid" class="btn btn-primary">Submit</button>
</form>
答案 0 :(得分:0)
好像你的app.post(&#39; / send&#39;,功能(req,res)&#39;功能不接受JSON。
如果您发送x-www-form-urlencoded值,则可以正常工作。
myarray
答案 1 :(得分:0)
答案很简单......
app.set('views', __dirname);
app.set('view engine', 'jade');
如果您没有设置任何内容,Express不会默认为html5。我删除了大部分这些,因为我使用角度来处理我的所有路由,并且认为我不需要它。
如果存储任何相关模板(如电子邮件),请确保至少拥有视图引擎和目录集。显然,快递不会对你的角度路由器说多少。
答案 2 :(得分:-1)
url需要完整路径:
$scope.processForm = function(user) {
console.log('Im in the controller');
$http({
method : 'POST',
url : 'http://52.11.14.57:9000/send',
data : $scope.user,
dataType : "json",
headers : { 'Content-Type': 'application/json' },
});
}
如果你在本地测试url将是 - &gt; http://localhost:PORT/send