节点:使用到Nodemailer的传递流



我正在使用officegen生成一个Word文档,然后计划使用Nodemailer(和Sendgrid)将其附加到电子邮件中。

officegen输出一个流,但我更喜欢将其直接传递到附件,而不是将Word文档保存在本地然后附加它。

// Generates output file    
docx.generate(fs.createWriteStream ('out.docx'));
var client = nodemailer.createTransport(sgTransport(options));
var email = {
    from: 'email@here',
    to: user.email,
    subject: 'Test Email send',
    text: 'Hi!nn' +
        'This is a test email.'
    attachments: [{ // stream as an attachment
        filename: 'out.docx',
        content: 'out.docx' // Ideally, I'd like this to be a stream through docx.generate()
    }]
};
client.sendMail(email, function(err, info) {
    if (err) {
        console.log(err);
        return res.send(400);
    }
    return res.send(200);
});

您可以将流对象直接传递给content。officegen似乎不支持管道,所以你需要一个直通流来处理这个

var PassThrough = require('stream').PassThrough;
var docstream = new PassThrough();
docx.generate(docstream);
...
var attachments = [{ // stream as an attachment
    filename: 'out.docx',
    content: docstream
}];

相关内容

  • 没有找到相关文章

最新更新