编码Base64并作为附件发送

问题描述 投票:0回答:1

这是文件

的示例结构
file:
   [ { container:'data:application/pdf;base64,JVBERi0x ...,
       filename: 'logofinal.psd',
       mimetype: 'application/pdf',
       file_type: 'random'}]

我如何在nodemailer中将其作为附件发送,我添加了:

  attachments: [
    { 
      filename: mailData.file.filename,
      content: mailData.file.container,
      contentType: mailData.file.mimetype,
      encoding: 'base64'
    }
  ]

也许我需要一个缓冲区来从file.container中删除头吗?

但是我不知道如何解决此问题。

node.js base64 decode attachment nodemailer
1个回答
0
投票
  • 您要发送带有附件文件的电子邮件。
  • 您具有base64数据,并且想要将其作为附件发送。
  • 您想使用nodemailer实现。
  • 您已经能够使用带有Gmail API的nodemailer来获取和发送电子邮件。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个答案之一。

模式1:

在这种模式下,base64数据是使用nodemailer直接发送的。

修改的脚本:

修改脚本后,请进行如下修改。

attachments: [
  { 
    filename: mailData.file.filename,
    content: content: /data:.*;base64,/.test(mailData.file.container) ? mailData.file.container.split(",")[1] : mailData.file.container,
    contentType: mailData.file.mimetype,
    encoding: 'base64'
  }
]
  • 如果始终包含base64数据的标头(如data:application/pdf;base64,,您还可以将其修改为content: mailData.file.container.split(",")[1]

模式2:

在此模式中,base64数据被转换为缓冲区,并使用nodemailer发送。

修改的脚本:

修改脚本后,请进行如下修改。

attachments: [
  { 
    filename: mailData.file.filename,
    content: Buffer.from((/data:.*;base64,/.test(mailData.file.container) ? mailData.file.container.split(",")[1] : mailData.file.container), 'base64'),
    contentType: mailData.file.mimetype,
  }
]
  • 如果始终包含base64数据的标头(如data:application/pdf;base64,,您还可以将其修改为content: Buffer.from(mailData.file.container.split(",")[1], 'base64'),

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.