Nodemailer找不到txt文件



我一直在这里寻找答案,但到目前为止都没有成功。基本上我有一个txt文件,我想用Nodemailer发送它,就这样。但我一直在犯这样的错误:错误:ENOENT:没有这样的文件或目录,打开"data.txt"该文件存在,并且与负责发送该文件的.js文件直接相同,因此路径正确。我已经检查了我的.json文件,我应该需要的所有包都存在。这一切在当地都有效,所以我很难理解哪里出了问题。

这是代码:

let nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
service: 'outlook',
auth:{
user: 'myEmail',
pass: process.env.MAIL_PASS
}
});
data.map(coin => {
if(coin.symbol !== 'BNB'){
top80.push(coin.symbol.toUpperCase());
cleanedOrders[coin.symbol.toUpperCase()] = [];
}
})
let mailoptions = {
from: 'senderEmail',
to: 'toEmail',
subject: 'Report',
text: 'Find this months report attached.',
attachments: [
{
filename: 'report.txt',
path: 'data.txt'
}
]
}
function getCoinData(numberOfCoins) {
//should be < -1
if (numberOfCoins > -1) {
//console.log('All coin orders captured');
//email results
transporter.sendMail(mailoptions, (err, info) => {
if(err){
console.log(err);
res.json(`error compiling report: ${err}`);
} else {
res.json(`Report sent.`);
}
});
}
}

由于您提供了一个相对路径,nodemailer将建立一个从relativeprocess.cwd的路径。process.cwd()是程序的工作目录,或者想想main.js文件的位置,即启动程序的文件夹!。

假设您有以下文件夹结构:

main.js
-email
--email.js
--data.txt

如果使用main.js启动程序,即使调用了文件email.jsprocess.cwd()参数也将始终是main.js所在的文件夹。

选项1

  • data.txt移动到根文件夹(与main.js所在的文件夹相同(,它就会找到它

选项2

  • 提供到nodemailer的绝对路径,最好使用全局__dirname

var { join } = requiure('path')
let mailoptions = {
from: 'senderEmail',
to: 'toEmail',
subject: 'Report',
text: 'Find this months report attached.',
attachments: [
{
filename: 'report.txt',

// __dirname is equal to the directory the file is located in!.
path: join(__dirname, 'data.txt')
}
]
}

相关内容

  • 没有找到相关文章

最新更新