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);
});
答案 0 :(得分:0)
听起来像是双重编码问题。
我建议您在收到pdf时将其解码。 Connect使用的base64编码仅用于将pdf从connect系统传输到您的应用。
然后,根据需要再次对其进行编码,以通过电子邮件进行运输。
对于电子邮件,为什么不将其作为pdf附件发送? (是编码格式吗?)
我建议您编写一个新的堆栈溢出问题:“如何使用nodemailer发送带有pdf附件的电子邮件”
(现在,我重新阅读您的问题,我想您正在尝试关注nodemailer问题。docusignapi标签使我不胜其烦。由于您的问题与DocuSign无关,因此您可能希望删除该标签。)