代码之家  ›  专栏  ›  技术社区  ›  Mrugesh

如何在sendgrid node.js v3客户端中将pdf文件作为附件发送

  •  1
  • Mrugesh  · 技术社区  · 6 年前

    我正在使用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 回复  |  直到 6 年前
        1
  •  1
  •   Saras Arya    5 年前

    假设您的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,如上图所示,然后重复这些步骤,您就可以开始了。