如何在sendgrid node.js v3客户端中以附件形式发送pdf文件

时间:2018-06-27 10:19:17

标签: sendgrid

我正在使用v3 node.js客户端发送电子邮件。现在,我想通过电子邮件发送pdf附件。我浏览了API文档。但是我在任何地方都没有找到如何做的。

我正在使用以下代码发送电子邮件。

const msg = {
        to: process.env.EMAIL_ID,
        from: process.env.ALERT_EMAIL_ID,
        subject: subjectText,
        text: info
    };

    sgMail.send(msg);

1 个答案:

答案 0 :(得分:0)

让我们假设您的PDF位于S3中。

从S3获取文件

const pdfFile = await s3
       .getObject({
         Bucket: PDF_BUCKET_NAME,
         Key: `flight-${fileName}.pdf`,
       })
       .promise();

拥有文件后

const base64data = pdfFile.Body.toString('base64');

const data = {
        from: 'text@example.in',
        to: user.emailId,
        subject: 'Your ticket for flight PNR XYSSA1 from DEL-BLR',
        html: `Please find attached your ticket
            <br><br>Regards<br>
            Team Example`,
        attachments: [
          { content: base64data, filename: 'flight-ticket', type: 'application/pdf', disposition: 'attachment' },
        ],
      };

await sgMail.send(data);

如果您的文件位于文件系统中,只需从fs.readFile获取缓冲区,将其转换为如上所示的base64并重复上述步骤即可。