2014-11-07 3 views
2

나는 다음 Nodemailer (및 Sendgrid)를 사용하여 이메일에 첨부 할 계획이라고 officegen 사용하여 Word 문서를 생성하고 있습니다에 통과 스트림을 사용.노드 : Nodemailer

officegen에서 스트림을 출력하지만 Word 문서를 로컬에 저장하고 첨부하는 대신 첨부 파일을 전달하는 것이 좋습니다.

// Generates output file  
docx.generate(fs.createWriteStream ('out.docx')); 

var client = nodemailer.createTransport(sgTransport(options)); 

var email = { 
    from: '[email protected]', 
    to: user.email, 
    subject: 'Test Email send', 
    text: 'Hi!\n\n' + 
     '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); 
}); 

답변

4

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 
}];