发送PDF / Docx字节数组作为电子邮件附件

时间:2018-11-29 20:15:23

标签: node.js express docusignapi nodemailer

DocuSign在签署文件时呼叫我们的网络挂钩。然后将这些文档存储在数据库中。它们是从DocuSign收到的,以base64binary编码的PDF字节形式存储。然后,另一台服务器调用此服务器以检索文档。然后,我通过nodemailer将文档作为附件发送。打开附件后,它无法正确渲染/解码。它显示为已编码的base64数据,而不是可读文本。有人可以指出我在做什么错吗?

响应正文如下:

[ { Name: [ 'name-of-doc.docx' ], PDFBytes: [ 'JVBERi0xLjUKJfv8/f4KJVdy ... '] } ]

以下是代码:

request(options, function (err, response) {

      var mailOptions = {
        from: 'email@domain.com',
        to: 'email@domain.com',
        subject: "Test",
        html: "This is a test. See attached.",
        attachments:[{
          filename: JSON.parse(response.body).pdfs[0].Name,
          content: JSON.parse(response.body).pdfs[0].PDFBytes[0],
          encoding: 'base64'
          // also have tried new Buffer(...PDFBytes[0], 'base64') in content
        }]
      };

      transporter.sendMail(mailOptions);

  });

1 个答案:

答案 0 :(得分:0)

听起来像是双重编码问题。

我建议您在收到pdf时将其解码。 Connect使用的base64编码仅用于将pdf从connect系统传输到您的应用。

然后,根据需要再次对其进行编码,以通过电子邮件进行运输。

对于电子邮件,为什么不将其作为pdf附件发送? (是编码格式吗?)

我建议您编写一个新的堆栈溢出问题:“如何使用nodemailer发送带有pdf附件的电子邮件”

(现在,我重新阅读您的问题,我想您正在尝试关注nodemailer问题。docusignapi标签使我不胜其烦。由于您的问题与DocuSign无关,因此您可能希望删除该标签。)