loopback发送附件无效的电子邮件

问题描述 投票:0回答:1

我有职业PersistedModel用于存储数据库中的数据,我有文件存储的附件模型存储在某个位置。现在我想发送一个包含数据的电子邮件。我只能发送职业数据但我想发送附件也使用相同的电子邮件。我无法获取文件名,因为它不在附件中的职业模型中。如何获取文件名并发送它帮助我。

career.js

const app = require('../../server/server');
module.exports = function(Career) {
    Career.afterRemote('create', function(context, remoteMethodOutput, next) { 
        next(); 
       console.log(remoteMethodOutput) 
    Career.app.models.Email.send({ 
            to: '[email protected]', 
            from: '[email protected]', 
            subject: 'my subject', 
            html: 'Hello-world',
            attachments: [
             {  
            path: '../files/resume/'+remoteMethodOutput.resume,
             }
             ],
            }, function(err, mail) { 
                // console.log(context.result.email)
            console.log('email sent!'); 
            cb(err); 
        }); 
    }); 
};

attachment.json

{
  "name": "attachment",
  "base": "Model",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

我用来存储文件的项目结构是

enter image description here

javascript loopbackjs email-attachments strongloop nodemailer
1个回答
0
投票

使用文件的绝对路径始终比相对路径更强大。使用__dirname

const filePath = __dirname + '/files/resume/' + remoteMethodOutput.resume;

如果你需要上升一级,然后进入files目录,你需要Node的path模块来解决它:

const path = require("path"),
      filePath = path.normalize(__dirname + '/../files/resume/' + remoteMethodOutput.resume)
© www.soinside.com 2019 - 2024. All rights reserved.