2015-04-28 4 views
0

http://52.11.14.57:9000/#/

Контактный формуляр должен отправить электронное письмо, но вместо этого console.log показывает 404 ошибки, хотя данные видны. Node.Js/Express и Angular: однако я использую UI-маршрутизатор с угловым ... может ли это вызвать conflich?

Угловой. 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: '[email protected]', 
     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: '[email protected]', 
    To: '[email protected]', 
    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

Можете вы рассказать точную ошибку 404, которую вы видите на консоли. – Zee

+1

На каком порту экспресс js слушает? Нет ли групп, в которые вы включаете отправку? Перезагрузите сервер после добавления/отправки маршрута. – vanadium23

+0

Является ли пользователь и пароль gmail в вашем коде фальшивым, не так ли? ;) Если нет, могу ли я предложить вам изменить его как можно скорее? –

ответ

-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 будет ->http://localhost:PORT/send

0

Кажется, что ваша функция app.post ('/ send', function (req, res) 'не принимает JSON.

если вы отправляете x-www-form-urlencoded значения, он работает.

$http({ 
    method : 'POST', 
    url  : '/send', 
    data : 'test=' + $scope.user.test + '&' + 'email=' + $scope.user.email + '&' + 'name=' + $scope.user.name + '&' + 'message=' + $scope.user.message 

}); 
0

Ответ был просто ....

app.set('views', __dirname); 
app.set('view engine', 'jade'); 

Экспресс не по умолчанию html5, если вы ничего не установлено. Я удалил большинство из них, так как я использовал углы для обработки всей моей маршрутизации и не думал, что мне это нужно.

Убедитесь, что у вас есть хотя бы механизм просмотра и набор каталогов, если вы храните любые соответствующие шаблоны (например, электронные письма). Очевидно, что экспресс не будет много говорить о вашем угловом маршрутизаторе.