javascript - 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,
}
}));
解决方案
推荐阅读
- javascript - 放大可见时间轴时缺少结束日期的项目
- javascript - 是否可以在我的网站上显示 .asf 视频格式?
- android - 手机未收到 Wear OS 发送的消息
- php - "?" 和有什么不一样 和 PHP 函数参数中的“= null”
- java - java在处理ArrayLists时如何处理对象引用?
- excel - 组合框到列表框重复项检查vba excel
- data-structures - 固定大小的容器,其中物品根据需要存在
- mysql - 我曾尝试重置 MySQL root 密码,尝试了 3 种方法寻找替代方案?我正在使用 Windows 机器的命令行
- json - 如何在swift中使用JSON日期字符串显示过去和未来的日期
- c++ - 将排列分解为具有少于 O(n) 额外内存的循环