无法加载电子邮件模板nodejs nginx
Can't load email template nodejs nginx
我 运行 我的 nginx ubuntu 服务器上的一个小节点应用程序。我设法启动了站点并 运行 为所有静态文件提供服务。 (我花了一段时间才弄明白)。
但现在我想 运行 一个 cron 作业来发送电子邮件。在这封电子邮件中,我使用 'fs' 加载了一个简单的 html 模板。当我 运行 cron 作业时,它给我错误:
错误:ENOENT:没有那个文件或目录,打开 'email.html'
我认为又是因为找不到静态文件但不知道如何修复它。因为我不使用 express to 运行 这个脚本。我的 script.js 看起来像这样:
'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()
});
script.js 和 email.html 在同一个根文件夹中
我的 nginx 文件如下所示:
server {
listen 80;
listen [::]:80;
server_name roostr.online www.roostr.online;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:5000/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/(images/|img/|javascript/|html/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {
root /var/www/roostr.online/html/public;
access_log off;
expires max;
}
}
var html = fs.readFileSync('./path/email.html', 'utf8');
我 运行 我的 nginx ubuntu 服务器上的一个小节点应用程序。我设法启动了站点并 运行 为所有静态文件提供服务。 (我花了一段时间才弄明白)。
但现在我想 运行 一个 cron 作业来发送电子邮件。在这封电子邮件中,我使用 'fs' 加载了一个简单的 html 模板。当我 运行 cron 作业时,它给我错误:
错误:ENOENT:没有那个文件或目录,打开 'email.html'
我认为又是因为找不到静态文件但不知道如何修复它。因为我不使用 express to 运行 这个脚本。我的 script.js 看起来像这样:
'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()
});
script.js 和 email.html 在同一个根文件夹中
我的 nginx 文件如下所示:
server {
listen 80;
listen [::]:80;
server_name roostr.online www.roostr.online;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:5000/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/(images/|img/|javascript/|html/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {
root /var/www/roostr.online/html/public;
access_log off;
expires max;
}
}
var html = fs.readFileSync('./path/email.html', 'utf8');