如何使用nodemailer发送base64转换的pdf

时间:2018-09-03 13:55:29

标签: javascript node.js buffer nodemailer

我的服务器上有pdf的base64版本,可以在console.log中查看其值。该变量称为encodedpdf,执行console.log(encodedpdf)会显示pdf的base64版本。

Nodemailer允许我们发送bsae64文件作为附件,并使用缓冲区对其进行转换。下面是代码

attachments: [{
            filename: 'main.pdf',
            content: new Buffer(encodedpdf,'base64')
          }]

但是,我不断收到此错误

  

TypeError:第一个参数必须是字符串,Buffer,ArrayBuffer,   数组或类似数组的对象

Edit1:

这是我的前端代码,我将pdf转换为base64并将其作为ajax发送

 var element = document.getElementById('element-to-print');
           html2pdf().from(element).outputPdf().then(function(pdf) {
            const newpdf = btoa(pdf);    //This line
            $.post('./setup', newpdf, function(result) {
                console.log('result', result);
            }); 

在后端发帖请求中,我得到了大量随机字符串,因此我假设btoa(pdf)正在将pdf转换为base64。这里可能有问题吗?

1 个答案:

答案 0 :(得分:0)

new Buffer(String,'base64')的使用方式是deprecated

请使用以下方式将字符串编码为base64

Buffer.from("I am a tring").toString('base64') 

或使用nodemailer的内置功能发送以base64编码的字符串pdf

filename: 'your.pdf',
content: 'encodedpdfstring', //EncodedString
encoding: 'base64'