需要将从 GET METHOD 检索到的 JSON 数据作为电子邮件发送。我需要通过获取的 JSON 对象定义电子邮件的正文。我不知道如何解决这个问题。
这是我的示例代码:
app.get('/userinfo',(req,res)=>{
dbconn.query('exec sp_GetDueList',(err,rows,fields)=>{
if(!err){
// console.log(rows.recordsets[0][5].Instrument)
for(let i =0; i<= rows.recordsets[0].length-1; i++){
console.log(JSON.stringify(rows.recordsets[0][i].Instrument)+ " "+
JSON.stringify(rows.recordsets[0][i].ID_No)+ " "+JSON.stringify(rows.recordsets[0][i].NextDueDate))
}
email.main(subject, body, res).catch((err) => {
console.log(err);
})
} else{
res.send(err);
}
res.end();
})
})
我得到这样的输出
Hello here's the json
"Coating Thickness Gauge" "BG-05" "2019-10-17T00:00:00.000Z""Coating Thickness Gauge" "BG-06" "2019-10-17T00:00:00.000Z""Coating Thickness Gauge" "BG-07" "2019-10-17T00:00:00.000Z""Coating Thickness Gauge" "BG-09" "2019-09-15T00:00:00.000Z""Coating Thickness Gauge" "BG-10" "2019-09-15T00:00:00.000Z""Coating Thickness Standards" "TS-04" "2019-09-01T00:00:00.000Z""Deep Freezer" "LE-05" "2019-11-07T00:00:00.000Z""DSC Tester " "LE-04" "2019-09-17T00:00:00.000Z""Freezer " "LE-11" "2019-11-07T00:00:00.000Z""Holiday Detector " "HD-349" "2019-11-20T00:00:00.000Z""Holiday Detector " "HD-488" "2019-10-15T00:00:00.000Z""Jeep Meter " "JM-02" "2019-09-26T00:00:00.000Z""Lab Oven " "LE-09" "2019-11-07T00:00:00.000Z""Lab Oven (CDT) " "LE-06" "2019-11-07T00:00:00.000Z""Microscope" "LE-01" "2019-11-07T00:00:00.000Z""Pit Gauge" "PG-10" "2019-09-25T00:00:00.000Z""Pit Gauge" "PG-11" "2019-09-27T00:00:00.000Z""Pit Gauge" "PG-12" "2019-08-18T00:00:00.000Z""Salt Contamination Meter" "TM-01" "2019-08-24T00:00:00.000Z""UT Gage " "UT-02" "2019-06-25T00:00:00.000Z"
现在我想将此数据作为电子邮件正文发送。我知道这个堆栈溢出人们认为这个问题很愚蠢或太简单了..我到处搜索但找不到工作模型。
如果有人能提供帮助,我将不胜感激
最佳答案
我假设您还没有安装像 nodemailer 这样的软件包来执行此操作,请通过 npm 安装它:npm -i -S nodemailer
var nodemailer = require('nodemailer');
//Here you have to set up your email client, try gmail it's free but otherwise you have to use a service like sendgrid...
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
然后你必须在你的函数中使用你的电子邮件:
app.get('/userinfo', (req, res) => {
dbconn.query('exec sp_GetDueList', (err, rows, fields) => {
if (!err) {
// console.log(rows.recordsets[0][5].Instrument)
let emailBody;
for (let i = 0; i <= rows.recordsets[0].length - 1; i++) {
console.log(JSON.stringify(rows.recordsets[0][i].Instrument) + " " +
emailBody += JSON.stringify(rows.recordsets[0][i].ID_No) + " " + JSON.stringify(rows.recordsets[0][i].NextDueDate))
}
var mailOptions = {
from: 'youremail@gmail.com',
to: 'myfriend@yahoo.com',
subject: 'Sending Email using Node.js',
html: `<h1>Hello here\'s the json</h1><p>${emailBody}</p>`
};
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
} else {
res.send(err);
}
res.end();
})
})
我还没有测试过,也没有真正理解你想要做什么,但这应该是一个起点,代码应该分割成它们自己的辅助函数,并使其更可重用。但请尝试将此作为一个很好的起点。
查看nodemailer:https://nodemailer.com/about/
关于javascript - 如何将 get 方法中的 JSON 数据构建为 html 并将其发送到电子邮件正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58631638/