我一直在这里寻找答案,但到目前为止都没有成功。基本上我有一个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
将建立一个从relative
到process.cwd
的路径。process.cwd()
是程序的工作目录,或者想想main.js
文件的位置,即启动程序的文件夹!。
假设您有以下文件夹结构:
main.js
-email
--email.js
--data.txt
如果使用main.js
启动程序,即使调用了文件email.js
,process.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')
}
]
}