Как построить данные JSON из метода get в html и отправить их в тело письма - PullRequest
0 голосов
/ 30 октября 2019

Необходимо отправить данные JSON, полученные из метода GET, как электронное письмо. Мне нужно определить тело письма через полученный объект 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"


Теперь я хочу отправитьэти данные как тело письма. Я знаю, что это переполнение стека, люди думают, что этот вопрос глуп или слишком прост ... Я искал везде и не мог найти работающую модель.

Если кто-то может помочь, то был бы очень благодарен

1 Ответ

1 голос
/ 30 октября 2019

Я предполагаю, что вы не установили пакет, такой как 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...