试图设置一个表格,该表格接收beta测试电子邮件列表的用户输入,该表格将向我发送带有用户信息的电子邮件,并将同一表单数据存储到MySQL数据库中。/p>
我在与NodeMailer对象的相同路由内具有MySQL连接和查询,但是当提交表单时,我会收到一个错误,说" admin尚未定义"。这是运输对象内部的管理员。我认为如果两个不同的对象(Tranporter和连接(具有相同的属性名称,那么我可能会引起问题,因此我将传统的NodeMailer"用户"更改为" Admin"。
const express = require("express");
const app = express();
const nodemailer = require("nodemailer");
const bodyParser = require("body-parser");
const mysql = require("mysql");
app.use(bodyParser.urlencoded({extended: true}));
// send "Beta" email when user signs up to the email list using the "Beta" form
app.post("/register", function(req, res){
// connect to database
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "PASSWORD",
database: "DATABASE_NAME"
});
// insert statement
let insert = "INSERT INTO Beta_Testers(First_Name, Last_Name, Beta_Email) VALUES ('" + req.body.First_Name + "', '" + req.body.Last_Name + "', '" + req.body.Beta_Email + "')";
// execute the insert statement
connection.query(insert);
// disconnect from database
connection.end();
// nodemailer objects
let mailOpts, transporter;
// email transporter
transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 3000, // changed from 465
secure: true,
auth: {
admin: "GMAIL_USER",
pass: "PASSWORD"
}
});
// email credentials
mailOpts = {
from: req.body.First_Name + " " + req.body.Last_Name + " <" + req.body.Beta_Email + ">",
to: admin,
subject: "You have a new BETA tester!",
text: `${req.body.Beta_Email} has signed up to be a BETA tester for WEBAPP_NAME. Please confirm sucessful registration into DATABASE_NAME.`
};
// send email and verify contact
transporter.sendMail(mailOpts, function(err, res) {
if (err) {
res.render("contact-failure");
} else {
res.render("contact-success");
}
});
});
ReferenceError: admin is not defined
错误在:" to:admin"
它应该包含一封电子邮件将发送给发送电子邮件。这些是mail_options,并且需要使用" abc@xyz.com"之类的电子邮件设置"要"选项。
您可以设置: -
to:req.body.email