无法加载电子邮件模板Node.js Nginx

时间:2018-07-25 09:02:39

标签: node.js nginx nodemailer

我在Nginx ubuntu服务器上运行一个小节点应用程序。我设法通过提供所有静态文件来使网站正常运行。 (花了我一段时间才找出答案)。

但是现在我想运行一个cron作业来发送电子邮件。在这封电子邮件中,我使用“ fs”加载了一个简单的html模板。当我运行cron作业时,它给了我错误:

错误:ENOENT:没有此类文件或目录,请打开'email.html'

我认为这又是由于找不到静态文件而又不知道如何解决它。因为我不使用express运行此脚本。我的script.js看起来像这样:

i = 0
Do Until i = 999
    i = i + 1
        If IsEmpty(Cells(i, 1)) = True Then
           Cells(i, 1).Value = "Text..."
        End If
Loop

script.js和email.html位于同一根文件夹中

我的nginx文件如下:

'use strict';
const nodemailer = require('nodemailer');
var ejs = require("ejs");
var fs = require("fs");
var Handlebars = require('handlebars');

var source = fs.readFileSync('email.html','utf8');

var template = Handlebars.compile(source);

var result = template(user);

var mailOptions = {
    from: '"Me, <me@gmail.com>', // sender address
    to: "user@user.com", // list of receivers
    subject: 'subject', // Subject line
    html: result
};

transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
        return console.log(error);
    }
    console.log('Message sent: %s', info.messageId);
    console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
    process.exit()
});

1 个答案:

答案 0 :(得分:2)

var html = fs.readFileSync('./path/email.html', 'utf8');