繁体   English   中英

如何从nodejs应用程序作为cronjob将ejs文件作为HTML email发送

[英]How to send a ejs file as HTML email from nodejs application as cronjob

我有一个 node.js 应用程序,我想每天早上 8 点从这个应用程序发送一个 HTML email 给少数人。 我有一个dashboard.ejs 文件,它从数据库中获取一些数据并在引导仪表板模板中显示它们。 我想将此 dashboard.ejs 作为 HTML email 发送,其中包含数据库中的所有数据,并且样式与从应用程序加载此 dashboard.ejs 时相同。

我已经准备好 cron 作业和邮件 function 准备好了。 我无法做的就是通过 email 将 dashboard.ejs 文件作为 HTML 发送。可以这样做吗? 如果是,任何帮助将不胜感激。

 var mailer = require('express-mailer'); var CronJob = require('cron').CronJob; mailer.extend(app, { from: 'user@gmailcom', host: 'smtp.gmail.com', secureConnection: true; port: 465, // port for secure SMTP transportMethod: 'SMTP', auth: { user: 'user@gmail.com', pass: 'password' } }); var job = new CronJob('00 49 * * * *', function() { console.log('This runs on 49th second of every min every hour every day every month every year') app.mailer.send('dashboards/dashboard', { to: 'user2@gmail.com', subject: 'TEST EMAIL', message:'Hello World' }, function(err) { if(err) console.log('ERROR', err); } ); }, function() { console.log('This function is executed when job stops'); }, false, 'Asia/Kolkata' ); job.start();

除非您将其构建到已经存在的快速应用程序中,否则我不鼓励这种方法。 在上面的示例中,除了视图引擎之外,您并没有真正使用 express。

不要使用 Express,只需获取您需要的部分并使用它。 您可以使用ejs ejs.renderFile()直接使用 ejs 生成 html 数据。 然后使用nodemailer发送电子邮件( express-mail使用它为您发送电子邮件)。

 const ejs = require('ejs'); const nodemailer = require('nodemailer'); const CronJob = require('cron').CronJob; const template = './dashboards/dashboard.ejs'; const transport = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 465, secure: true, auth: { user: 'user@gmail.com', pass: '*' } }); const job = new CronJob('00 49 * * * *', function() { let templateData = { name: 'Test Name' }; ejs.renderFile(template, templateData, (err, html) => { if (err) console.log(err); // Handle error console.log(`HTML: ${html}`); let mailOpts = { from: 'user@gmail.com', to: 'recipient', subject: 'EJS Test File', html: html }; transport.sendMail(mailOpts, (err, info) => { if (err) console.log(err); //Handle Error console.log(info); }); }); }, () => { console.log('This function is executed when job stops'); }, false, 'Asia/Kolkata' }; job.start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM