node.js - nodemailer没有从节点服务器发送电子邮件?
问题描述
我创建了一个带有 React 前端和 node.js 和 nodemailer 后端的表单。我正在尝试通过电子邮件发送该数据。我可以将它发送到后端。那里收到的很好。但是,我在发送电子邮件时遇到问题,因为从 Transporter.sendMail 函数执行“邮件未发送”错误,我不知道为什么。
很想得到一些帮助。请参阅我的服务器的以下代码。出于安全目的,我显然删除了我的身份验证详细信息。
控制台日志错误:
[0] 未发送
const nodemailer = require('nodemailer');
const path = require('path');
const express = require("express");
const app = express();
const port = 5000;
const cors = require("cors");
app.use(cors());
const bodyParser = require("body-parser");
app.use(bodyParser.json()); // to support JSON-encoded bodies
app.use(
bodyParser.urlencoded({
// to support URL-encoded bodies
extended: true
})
);
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'email',
pass: 'password',
}
});
app.get("/home", (req, res) => {
console.log("Hello from .get /home", req.body.generalDetails, req.body.firstName, req.body.mName );
})
app.post("/home", (req, res) => {
var mailOptions = {
from: 'email',
to: 'email',
subject: 'Hello',
text: req.body.generalDetails,
}
transporter.sendMail(mailOptions, function(err, res) {
if (err) {
console.log('Mail not sent');
} else {
console.log('Mail sent');
}
});
let data = [{
//page one data
generalDetails: req.body.generalDetails,
fName: req.body.fName,
mName: req.body.mName,
lName: req.body.lName,
email: req.body.email,
}];
res.json(data);
}
);
app.listen(port, () => `Server running on port ${port}`);
解决方案
在最近的节点邮件更改中,他们引入了身份验证中的身份验证键。目前您正在身份验证对象中传递密码和用户。我进行了这些更改并且节点邮件程序开始工作。经过
`auth: {
api_key: config.mailer.auth.pass
}`
我希望它会起作用。
推荐阅读
- python - 粗体刻度标签颜色条 matplolib
- vba - 简单的 MS 访问表单 - 检查复选框崩溃应用程序
- javascript - 如果条件将javascript移动到外部文件?
- makefile - Makefile 循环:“命令未找到错误”在循环开始之前弹出,但之后工作正常
- java - 将 Gradle 父目录中的文件加载到 Java 测试中
- vb.net - 如何在运行时加载引用另一个程序集的程序集
- ios - 未定义符号:将 Xcode 更新到 11.1 版后出现 _OBJC_CLASS_$_WKInterfaceController 错误
- git - `git pull` 是否仅将更改合并到签出的分支中?
- bash - 如何获取没有最后 N 个字符的字符串?
- ios - xcodebuild - 在私人模拟器上运行