我正在尝试获取我的 nodeJS 服务器从前端表单接收的数据,以将该数据发送到我的电子邮件。我曾尝试使用 nodemailer 并没有取得多大成功。有人能告诉我下面的代码我做错了什么吗?
const express = require("express");
const app = express();
const nodemailer = require("nodemailer");
var smtpTransport = require("nodemailer-smtp-transport");
const PORT = process.env.PORT || 4000;
app.use(express.static(__dirname + "/front-end"));
app.get("/", (req, resp) => {
resp.sendFile(__dirname + "/front-end/index.html");
});
app.use(express.json());
app.use(express.urlencoded());
app.post("/formData", (req, resp) => {
const data = req.body;
var transport = nodemailer.createTransport(
smtpTransport({
service: "Gmail",
auth: {
user: "user@gmail.com",
pass: "123456",
},
})
);
transport.sendMail(
{
//email options
from: "Sender Name <email@gmail.com>",
to: "Receiver Name <receiver@email.com>", // receiver
subject: "Emailing with nodemailer", // subject
html: data, // body (var data which we've declared)
},
function (error, response) {
//callback
if (error) {
console.log(error);
} else {
console.log("Message sent:");
resp.send("success!");
}
transport.close();
}
);
});
app.listen(PORT, () => {
console.log(`server running on port ${PORT}`);
});
答案 0 :(得分:0)
乍一看,您的代码对我来说看起来不错。我认为问题是(因为你没有说明你已经设置了),你想用 GMail 发送电子邮件。如果您想通过 Gmail 从您自己的应用程序或网络服务发送电子邮件,您应该在 Google Cloud Platform 中设置一个项目。 Read more here。
或者,您可以使用 Postmark 之类的服务,您可以将其配置为通过您拥有的域发送电子邮件。有免费试用。 Mailgun 是一个类似的服务。 (我不隶属于任何一个)。