首页 > 解决方案 > Node.js 中的 nodeMailer 返回“Cannot POST / nameOfPage”

问题描述

exports.contact=function(req,res) {
   if (req.method == "POST" && req.body.name && req.body.email && req.body.subject && req.body.message) {
      var mailOptions = {
         from: email@email1.com,
         to: email.email2.com,
         subject: "Subject",
         text: "HELLO!"
      };
      transporter.sendMail(mailOptions, function(error, info) {
         if (error) {
            res.render('landing.ejs', { message: "Message isn't send", level: "error" } );
            winston.info("Contact email error for user " + req.body.email);
         } else {
            res.render('landing.ejs', { message: "Message is send", level: "success" } );
            winston.info("Contact email success for user " + req.body.email);
         }
      });
   } else {
      res.render('landing.ejs', { message: "", level: "success" });  // OPEN INDEX
      winston.info("Redirect to landing page after contact form");
  }
};

如果我使用 Chrome 并发送电子邮件,则Cannot POST /customers在空白页面中返回错误(客户是页面的名称)但电子邮件已发送,然后如果我重新加载页面并重试,它可以正常工作而没有错误。而在其他浏览器上它只是不起作用,只会Cannot POST /customers在空白页面中返回错误。谁能帮助我防止错误返回给我?

这是我的 app.js:

let express = require('express');
let session = require('express-session');
let app = express();
let http = require('http');
let path = require('path');
let dotenv = require('dotenv').config();
let bodyParser=require("body-parser");
let winston = require('./helpers/winston'); // Log module
let fileUpload = require('express-fileupload'); // Upload file module
//var methodOverride = require('method-override');

global.site = process.env.SITE_URL;
global.site_qrcode = process.env.SITE_QRCODE;

let routes = require('./routes');
let user = require('./routes/user');

let dbConfig = require('./db/dbConfig');
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : dbConfig.host,
  port     : dbConfig.port,
  user     : dbConfig.user,
  password : dbConfig.password,
  database : dbConfig.database,
});

connection.connect();
global.db = connection;
winston.info("Database listen on port " + dbConfig.port);

let server_port = process.env.SERVER_PORT || 8080;
app.set('port', server_port);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: {
    maxAge: 600000,
  }
}));

标签: javascripthtmlnode.js

解决方案


推荐阅读