sendgrid在节点js中附加pdf文件

时间:2019-02-27 12:37:09

标签: node.js sendgrid

嗨,我正在尝试通过电子邮件发送pdf附件。

sgMail.setApiKey(my_key);
        fs.readFile('pdf/4.pdf', function(err, data) {

            sgMail.send({
                to          : 'dinesh@mail.com',
                from        : 'xxxxxxxxx@jdk.com',
                subject     : 'Report',
                attachments : [{filename: 'Report.pdf', 
                               content: data,
                               type: 'application/pdf',
                }],
                html        : 'bla bla'})})

这段代码给我一个错误

 Invalid type. Expected: string, given: object.

但是我发现了另一个stackoverflow答案的代码片段。它说您不需要传递内容的uri编码数据。 (评论中的那个问题)

如何使用节点js实现此目标?

1 个答案:

答案 0 :(得分:0)

我确实将我的编码编码为base64,这就是我的编码方式。也许有帮助。

function base64_encode(file){
  let bitmap = fs.readFileSync(file);
  return new Buffer(bitmap).toString('base64');
}

let data_base64 = base64_encode('../invoice.pdf');

const msg = {
to: emails,
from: '-----.com',
subject: `Invoice`,
text: `Invoice`,
html: "whatever",
attachments: [
  {
    filename: `invoice`,
    content: data_base64,
    type: 'application/pdf',
    disposition: 'attachment'
  }
 ]
};

sgMail
.send(msg)
.then((response) => {
  res.status(200).send('Success');
})
.catch((err) => {
  res.status(500).send(err);
});

希望这对其他人有帮助。 使用@ sendgrid / mail“:” ^ 6.3.1“,