2017-09-13 7 views
0

노드 녹스를 1 년 이상 사용하지 않아서 녹슨 느낌이 들었습니다. 다른 예제를 따라 Angular 폼을 설정하여/POST 요청을 보낸 다음 nodemailer sendMail() 메소드를 사용합니다. 내 양식에서 제출을 클릭하면 아무 일도 일어나지 않지만 각도 조절기가 200 응답을받습니다.Nodemailer 앱 및 경로가 양식 제출/POST에 연결되지 않음

server.js : 내 router.js 파일 내의 해당 게시물을 포함하지하기로 결정

var express = require('express'); 
var app = express(); 
var port = 9000; 
var apiRoutes = require('./app/routes.js'); 
var nodemailer = require('nodemailer'); 
var fs = require('fs'); 
var bodyParser = require('body-parser'); 
var safeKey = JSON.parse(fs.readFileSync('./safekey.json', 'utf-8')); 

var transporter = nodemailer.createTransport({ 
    service: 'Gmail', 
    auth: { 
     user: safeKey.emailUser + '@gmail.com', 
     pass: safeKey.emailPass 
    } 
}); 

// set up our express application 
app.use(express.static(__dirname + '/public/')); 
app.use('/node_modules', express.static(__dirname + '/node_modules/')); 
app.use('/scripts', express.static(__dirname + '/public/scripts/')); 
app.use('/css', express.static(__dirname + '/public/css/')); 
app.use('/html', express.static(__dirname + '/public/html')); 
app.use('/img', express.static(__dirname + '/public/img')); 
app.use('/fonts', express.static(__dirname + '/public/fonts')); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

app.all('/*', function (req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.sendFile('index.html', { root: __dirname + '/public/html' }); 
}); 

app.use('/', apiRoutes); 

app.post('/contact', function (req, res) { 
    console.log('hi, inside POST of /api/sendcontact'); 
    var data = req.body; 

    var mailOptions = { 
     from: data.email, 
     to: '[email protected]', 
     subject: '[LITSCO CONTACT FORM] Email sent by ' + data.name, 
     text: data.message 
    }; 

    transporter.sendMail(mailOptions, function (error, info) { 
     if (error) { 
      console.log(error); 
      res.json({ error: 'Email not sent' }); 
     } else { 
      console.log('Message sent: ' + info.response); 
      console.log('Data:' + data.contactName); 
      res.json({ success: 'Email has been sent.' }); 
     } 
    }); 
}); 

app.listen(port); 
console.log('Up and running on Port: ' + port); 

.

각도 컨트롤러 :

$scope.contactData = { 
     phone: '', 
     email: '', 
     name: '', 
     company: '', 
     message: '' 
    }; 
    $scope.postData = {}; 
$scope.postMail = function (contact) { 
      // wrap all your input values in $scope.postData 
      $scope.postData = angular.copy(contact); 

      var req = { 
       method: 'POST', 
       url: '/contact', 
       headers: { 
        'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' 
       }, 
       data: $scope.postData 
      }; 

      $http(req) 
       .then(function successCallback(response) { 
        console.log('success'); 
        //do something after success 
        // this callback will be called asynchronously 
        // when the response is available 
       }, function errorCallback(response) { 
        console.log('error'); 
        //do something after error 
        // called asynchronously if an error occurs 
        // or server returns response with an error status. 
       }); 
     }; 

HTML @ 당

<form class="col s12" ng-submit="postMail(contactData)"> 
        <div class="row"> 
         <div class="input-field col s12 m6"> 
          <input id="icon_prefix" type="text" ng-model="contactData.name"> 
         </div> 
         <div class="input-field col s12 m6"> 
          <input id="icon_telephone" type="tel" class="validate" ng-model="contactData.phone"> 
         </div> 
         <div class="input-field col s12 m6"> 
          <input id="icon_email" type="email" class="validate" ng-model="contactData.email"> 
         </div> 
         <div class="input-field col s12 m6"> 
          <input id="icon_business" type="tel" ng-model="contactData.company"> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="input-field col s12"> 
          <textarea id="textarea1" class="materialize-textarea" ng-model="contactData.message"></textarea> 
         </div> 
        </div> 
        <div class="row right"> 
         <button class="btn waves-effect waves-light" type="submit" name="action">Submit 
         </button> 
        </div> 
       </form> 
+0

시도 사용 우체부를 해결하여 이러한 방식으로 서버 엔드 포인트가 프론트 엔드인지 식별 ​​할 수 있습니다 문제 또는 백엔드 문제. 모든 서버 측 코드를 게시하지 않았으므로 확인할 사항이 몇 가지 있습니다. 1. http 서버를 정의하고 시작했습니다. 2. server.js에 앱 모듈을 내 보낸 지 확인하십시오. – spiritwalker

+0

@spiritwalker server.js 코드를 업데이트했습니다. 이것은 내 server.js 파일입니다. –

+0

app.all ("/ *"... POST 요청은 아마도? GET 요청으로 만 변경하십시오. – Rnice4christ

답변

0

app.all("/*".) 그렇게 app.get로 변경, 게시물을 무시했다 Rnice4christ 테스트 할