环回发送带有附件的电子邮件不起作用

时间:2019-04-02 06:35:14

标签: javascript loopbackjs email-attachments strongloop nodemailer

我的职业是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: 'lakshmipriya.l@gmail.com', 
            from: 'lakshmipriya.l@gmail.com', 
            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

1 个答案:

答案 0 :(得分:0)

为文件使用绝对路径总是比相对路径更可靠。为此使用__dirname

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

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

const path = require("path"),
      filePath = path.normalize(__dirname + '/../files/resume/' + remoteMethodOutput.resume)