mysql - 使用 nodemailer 发送电子邮件,并将表单数据插入 mysql db
问题描述
尝试设置一个表单来接收用户输入的 beta 测试电子邮件列表,它将向我发送一封包含用户信息的电子邮件,并将相同的表单数据存储到 mysql 数据库中。
我在与 nodemailer 对象相同的路由内有 mysql 连接和查询,但是当提交表单时,我收到一条错误消息,提示“未定义管理员”。这是传输器对象内的管理员。我认为如果两个不同的对象(传输器和连接)具有相同的属性名称可能会导致问题,因此我将传输器内的常规 nodemailer 'user' 更改为 '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 和选项“to”需要使用类似“abc@xyz.com”的电子邮件进行设置。
您可以设置:-
至:req.body.email
推荐阅读
- c - 来自同一源文件的不同可执行文件?
- python - How to convert from Unix epoch time and account for daylight saving time in Python?
- matlab - 更改 Simulink 响应优化的搜索范围
- node.js - 在 Discord.js 13 上运行嵌入时遇到问题
- c# - 为除一个区域之外的所有区域设置身份策略
- c++ - 在 std::async 中使用的函数中调用我的 Struct 时调用不带对象参数的非静态成员函数
- reactjs - 如何将对象添加到空列表
- javascript - 如何使用 JSZip 解压缩内存中的 .Zip 文件对象?
- python - 有没有办法让不和谐机器人跟踪频道中发送的每条消息并将该信息存储在其他地方?
- python-3.x - 如何将日期字符串如 16/08/2018 14.29.30 格式化为 Datetime 2018-08-16 14:29:30 Python