Search code examples
node.jspdfemail-attachmentssendgrid

Node.js SendGrid how to attach a PDF


I'm using SendGrid to send email in my Node.js application. Every combination I try to attach a pdf ends up with my attached pdf being unreadable.

I've tried:

fs.readFile('public_html/img/Report.pdf',function(err,data){
    var base64data = new Buffer(data).toString('base64');

    sendgrid.send({
        to        : hexDecode(_.e),
        from      : 'xxxxxxxxx@gmail.com',
        subject   : 'Report',
        
        files      : [{filename:'Report.pdf',content:'data:application/pdf;base64,'+base64data}],
        // files   : [{filename:'Report.pdf',contentType:'data:application/pdf',url:'public_html/img/'Report.pdf'}],
        // files   : [{filename:'Report.pdf',url:'public_html/img/'Report.pdf'}],
        html       : 'bla bla'

does any one know how to prevent 'Failed to load pdf document'??


Solution

  • According to the README, you should just pass your content, not turn it into a data URI.

    fs.readFile('public_html/img/Report.pdf', function(err, data) {
        sendgrid.send({
            to        : hexDecode(_.e),
            from      : 'xxxxxxxxx@gmail.com',
            subject   : 'Report',
    
            files     : [{filename: 'Report.pdf', content: data}],
            html      : 'bla bla'