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>
시도 사용 우체부를 해결하여 이러한 방식으로 서버 엔드 포인트가 프론트 엔드인지 식별 할 수 있습니다 문제 또는 백엔드 문제. 모든 서버 측 코드를 게시하지 않았으므로 확인할 사항이 몇 가지 있습니다. 1. http 서버를 정의하고 시작했습니다. 2. server.js에 앱 모듈을 내 보낸 지 확인하십시오. – spiritwalker
@spiritwalker server.js 코드를 업데이트했습니다. 이것은 내 server.js 파일입니다. –
app.all ("/ *"... POST 요청은 아마도? GET 요청으로 만 변경하십시오. – Rnice4christ