Node JS Nodemailer POST 内部服务器错误 500

米哈尔·库卡伊

大家好,我正在尝试使用 nodemailer 从我的网站发送电子邮件,并在按下发送按钮后快速路由我有信息 /contactForm 500 内部服务器错误,不知道如何解决它。

//app.js

// CONFIG
const express = require('express');
const app = express();
const exphbs = require('express-handlebars');
const compression = require('compression');
const config = require('./src/server/config/config');

const http = require('http');
const path = require('path');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const routes = require('./src/server/routes/index');
const nodemailer = require('./src/server/email/emailTransporter');

// view engine setup
const hbs = exphbs.create({
    defaultLayout: 'layout',
    extname: '.hbs',
    partialsDir: [
        './src/client/views/'
    ]
});
app.set('views', path.join(__dirname, './src/client/views'));
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

/**
 * Get port from environment and store in Express.
 */
const port = normalizePort(process.env.PORT || '3000');
const environment = process.env.NODE_ENV;
app.use(compression());
app.set('port', port);
app.use('/', express.static(__dirname, './src/client/views', {
    maxage: '1y'
}));
app.use('/', routes);
app.use('/portfolio', routes);
/**
 * Create HTTP server.
 */

const server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
    const port = parseInt(val, 10);

    if (isNaN(port)) {
        // named pipe
        return val;
    }

    if (port >= 0) {
        // port number
        return port;
    }

    return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
    if (error.syscall !== 'listen') {
        throw error;
    }

    const bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;

    // handle specific listen errors with friendly messages
    switch (error.code) {
        case 'EACCES':
            console.error(bind + ' requires elevated privileges');
            process.exit(1);
            break;
        case 'EADDRINUSE':
            console.error(bind + ' is already in use');
            process.exit(1);
            break;
        default:
            throw error;
    }
}

//index.js - 快速路由

const express = require('express');
const router = express.Router();
const config = require('../config/config');
const sendEmail = require('../email/emailTransporter');
const nodemailer = require('nodemailer');
/* Set HEaders. */
router.use('/*', function(req, res, next) {
    res.setHeader('Cache-Control', 'public, max-age=864000');
    res.setHeader("Content-Type", "text/html");
    next();
});

/* GET home page. */
router.get('/', function(req, res, next) {
    var vm = {
        title: 'Portfolio'
    };
    res.render('index.hbs', vm);
});

/* GET portfolio. */
router.get('/portfolio', function(req, res, next) {
    var vm = {
        title: 'portfolioPage'
    };
    res.render('portfolio.hbs', vm);
});

/* SEND EMAIL . */
router.post('/contactForm', sendEmail);

module.exports = router;

//角接触控制器

(function() {
    'use strict';

    angular
        .module('app.layout')
        .controller('contactCtrl', contactCtrl);

    /* @ngInject */
    function contactCtrl(emailService) {
        var vm = this;
        // CONTACT FORM
        vm.data = {};
        vm.invalidClass = false;
        vm.sendEmail = function(contactForm) {
            vm.submitClicked = true;
            if (contactForm.$valid) {
                emailService.sendEmail(vm.data);
            } else {
                vm.invalidClass = true;
            }
        };
    }
})();

// Angular 电子邮件服务

(function() {
    'use strict';
    angular
        .module('app.layout')
        .factory('emailService', emailService);
    /* @ngInject */
    function emailService($http, growl) {
        var service = {
            sendEmail: sendEmail
        };
        return service;

        function sendEmail(emailData) {
            return $http.post('/contactForm', emailData)
                .then(function(data) {
                    growl.addSuccessMessage("Your Email was sent");
                })
                .catch(function(err) {
                    growl.addErrorMessage("Message not sent");
                    console.log(err);
                });
        }
    }
})();
来自内巴顿的大天使

我想你应该parsebodyJSON请尝试以下操作:

app.use(bodyParser.json()); 

我认为您收到了JS Object而不是JSON从客户那里收到的

这是有关如何解决您的问题的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel 5.4 $.post() jquery.min.js:4 POST 500(内部服务器错误)

POST 500(内部服务器错误)

POST 500 内部服务器错误

REACTJS xhr.js:177 POST http://localhost:3000/registerUser 500(内部服务器错误)

gcloud - 500 内部服务器错误,angular 1 + node js

jQuery Ajax Post导致500内部服务器错误

POST 500(内部服务器错误)ajax,mvc

AJAX POST 500内部服务器错误

POST 500(内部服务器错误)-Laravel和Ajax

POST 500 内部服务器错误——PHP

主机上的AJAX POST 500内部服务器错误

$ .post jquery中的内部服务器错误500?

POST 请求上的 Http 500 内部服务器错误

Angular JS路由,500个内部服务器错误

Dropzone.js-Laravel | 500内部服务器错误

POST触发服务器api并响应客户端500(内部服务器错误)

500内部服务器错误AJAX POST请求laravel服务器

node.js nodemailer gmail错误

POST 错误 500(内部服务器错误)- JSON 语法错误

Django-Ajax POST错误403(禁止)和500(内部服务器错误)

500(内部服务器错误)获取并请求从JQuery / ajax到heroku服务器的POST

使用Ajax,React和Rails的POST 500(内部服务器错误)

Laravel 4.2和AJAX POST-500内部服务器错误

POST https://kayaindia.in/kaya/sendNotificationB.php 500(内部服务器错误)

500内部服务器错误; 在springBoot rest api中使用POST方法时

带有POST请求的500个内部服务器错误-Slim框架

无法通过$ http.post方法发送数据,出现500个内部服务器错误

Laravel AJAX POST请求失败(500内部服务器错误

$ .ajax中使用“ POST”方法传递数据时,出现500内部服务器错误