我有一个node.js应用程序,它使用nodemailer发送电子邮件。从本地主机运行正常,但是当我从服务器尝试时,我无法收到任何邮件。
因为,应用程序的其他活动均正常运行,这意味着我认为nodemailer已正确安装在服务器上。我尝试使用主机作为服务器和使用gmail作为服务的两种方式。这是我上次尝试过的这在本地主机上也可以正常工作。但是,将其放在服务器上时没有任何反应。
我的nodemailer配置为:
const output = `
<h3>Limit Details</h3>
<p>Admin has added ${limit} quota(s) to ${username}.</p>
`;
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
service: 'gmail',
port: 25,
secure: false, // true for 465, false for other ports
auth: {
user: '<gmail>',
pass: '<password>'
}
});
// setup email data with unicode symbols
let mailOptions = {
from: '"Sender" <sender gmail>', // sender address
to: '<receiver gmail>', // list of receivers
subject: 'Quota added information.', // Subject line
html: output // html body
};
// send mail with defined transport object
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));
});
为了进行测试,我已经控制台了messageId和Preview Url那么,从哪里可以在cpanel中查看此控制台消息?如何在cpanel的应用程序中查看此类控制台内容?
答案 0 :(得分:1)
不幸的是,据我所知,没有简单的方法可以访问cpanel服务器上的节点日志。 我通常要做的是设置log4js以便将日志写入文件:
const log4js = require('log4js');
log4js.configure({
appenders: { everything: { type: 'file', filename: 'logs.log' } },
categories: { default: { appenders: ['everything'], level: 'ALL' } }
});
const logger = log4js.getLogger();
然后您可以使用以下方式创建日志:
logger.debug('log message');
您还可以将日志文件提供给服务器:
app.get('/log', (req, res) => {
res.sendFile(path.join(__dirname + '/logs.log'));
});
答案 1 :(得分:0)
cPanel的应用程序管理器不是很充实。我一直在尝试,并将其与我以前使用的(PM2)进行比较,并将切换回PM2。 如果有人有兴趣支持,我确实向cPanel提出了功能请求。
否则,答案是使用诸如@zenott建议的自定义记录器将其写出。但是,尽管如此,我还是希望覆盖console.log,因此如果需要,可以很容易地切换回常规控制台日志。
我的解决方案:
const moment = require('moment')
const fs = require('fs')
let logStream = fs.createWriteStream('log.txt')
let console = {}
console.log = (obj) => {
var s = ''
if (typeof obj === 'string')
s = obj
else
s = JSON.stringify(obj)
var dS = '[' + moment().format(momentFormat) + '] '
s = `[${dS}] ${s}'\n'`
logStream.write(s)
}