Мне нужно направить сгенерированный PDF в nodemailer в виде вложения в nodejs - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно передавать или буферизовать сгенерированный pdf-файл как вложение электронной почты, не сохраняя pdf-файл локально, я могу получать электронную почту, но без вложения, я не могу выяснить, в чем проблема, плз, помогите мне .. ..

router.get("/email/:ptId", async(req, res)=>{
    Consultation.aggregate([
        {
            '$match':{ptId:req.params.ptId}
        },{
            "$lookup":{
                "from":"prescriptiontemps",
                "localField":"ptId",
                "foreignField":"ptId",
                "as":"prescription_info"
            }
        }
    ])
    .exec(function(err, alldetails){
        if(err){
            res.status(400).json(err)
            console.log("error",err)
        }else{
            res.status(200).render("report",{details: alldetails}, function(err,html){
            // res.status(200).json(results);
            const doc = pdf.create(html, options )
                // if (err) return console.log(err);
                let buffers = [];
                doc.on('data',buffers.push.bind(buffers));
                doc.on('end',() =>{
                    let pdfData = Buffer.concat(buffers);
                    var mailoptions = {
                        from: '"Finchtech" <finchtest4@gmail.com>',
                        to: "keerthimys.48@gmail.com",
                        subject:"prescription",
                        html: html,
                        attachment: [{
                            filename:"prescription.pdf",
                            content: pdfData 
                        }]
                    }
                    transporter.sendMail(mailoptions, (error, info)=>{
                        if (error){
                            return console.log(error);
                        }
                        console.log('message sent: %s',info.messageId);
                        console.log('preview URL: %s', nodemailer.getTestMessageUrl(info));



                });

                })  

            doc.end();
        })
        }
    })

})

Я попытался передать поток во вложение, но все равно получил тот же результат, что смог получить письмо, а не вложение.

pdf.create(html, options ).toStream((err, stream)=>{
                var self = this;
                if (err) return console.log(err);

                // var attach = attachemnt({data:buffer, filename:' prescription.pdf'})

                //nodemailer parameters
                var mailoptions = {
                    from: '"Finchtech" <finchtest4@gmail.com>',
                    to: "keerthimys.48@gmail.com",
                    subject:"prescription",
                    // html: html,
                    attachment: 
                    [{
                        // data: buffer,
                        filename: 'test.pdf',
                        content: stream
                    }]
                }
                transporter.sendMail(mailoptions, (error, info)=>{
                    if (error){
                        return console.log(error);
                    }
                    console.log('message sent: %s',info.messageId);
                    console.log('preview URL: %s', nodemailer.getTestMessageUrl(info));
                });
            });
        })
        }
    })

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...