react从MongoDB添加数据到email



很新的反应,只做了几个星期,我正在做一个个人使用的项目,使用nodemailer向我的电子邮件发送电子邮件,我已经做到了。我要做的下一部分是将数据添加到电子邮件中,这些数据将来自我的MongoDB数据库,如订单号,客户名称和工作状态,我在youtube和谷歌上搜索了高低,但没有真正找到任何关于这个问题的信息

也,它只在我输入node server.js时运行,然后它会自动发送我不想要的电子邮件,我希望它在提交被点击时运行,当一个状态在数据库中更新。

这是我在server.js上的代码

require('dotenv').config();
const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD
}
});

let mailOptions = {
from: 'group2021@gmail.com',
to: 'edge@gmail.com',
subject: 'Project Update',
text: 'Hello {{name}} please find this email as an update to you project.'
};
transporter.sendMail(mailOptions, function(err, data) {
if(err) {
console.log('Error Occured!', err);
} else {
console.log('Email Sent!')
}
});

我不确定你的应用程序看起来像什么,我假设它是SPA反应应用程序

我建议您使用Expressjs创建简单的http服务器,并创建端点,您将从客户端(react应用程序)调用例如(代码未测试只是一个例子)

const express = require('express');
const app = express();
const port = 3000;
const nodemailer = require('nodemailer');
app.get('/mail/:someID', async (req, res) => {
// someID is identifier to find data in db
// it will come from localhost:PORT/mail/>>someID<<
const { someID } = req.params; 
let data;
try {
data = await mongoCol.FindOne({
/* query */
}); // reads data from mongo
} catch (err) {
return res.status(500).json(err);
}
// prepare content
var text =
'Hello {{name}} please find this email as an update to you project.n' + data;
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD
}
});
let mailOptions = {
from: 'group2021@gmail.com',
to: 'edge@gmail.com',
subject: 'Project Update',
text: text
};
transporter.sendMail(mailOptions, function (err, data) {
if (err) {
console.log('Error Occured!', err);
return res.status(500).json(err);
} else {
console.log('Email Sent!');
return res.sendStatus(200);
}
});
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});

你应该添加某种授权,不允许其他人通过你的服务器发送电子邮件。

同样,它只在我输入node server.js时运行然后它会自动发送我不想要的邮件

这是因为你的代码不在函数中,任何时候你导入或启动文件(模块),它都会执行。

相关内容

最新更新