发送带有PDF扩展名的附件但不起作用

时间:2017-08-23 06:46:41

标签: node.js

我正在尝试创建一个动态文件并将其发送给附件中的用户,但在下载后却没有打开。 显示错误说"无法加载PDF 在内容中,我发送了所需的数据。 这是我的代码



router.get('/file',function(req, res){
  var filename1='invoice.pdf';
  filename1 = encodeURIComponent(filename1);
    var mailOptions={
        to: 'userMail@gmail.com',
        subject: 'Speaker Added',
        from: "admin@gmail.com",
        headers: {
            "X-Laziness-level": 1000,
            "charset" : 'UTF-8'
        },
        html: '<p style="color:#0079c1;">Hello'+' '+'My Name'+'</p></br>'
        +'<p style="color:#0079c1;">Thank you for choosing HOWDY.<p></br>'
        +'<p>Click on the link below to activate your account and get redirected to HOWDY</p></br>',
        attachments: [
   
        {   
            'filename':filename1,
             'content': 'data',
             'contentType':'application/pdf',
             'contentDisposition':'attachment'
        }
    ]
        
    }
    var transporter = nodemailer.createTransport({
        service: 'Gmail',
        auth: {
            user: 'admin@gmail.com', 
            pass: 'admin56789' 
        }
    });
    transporter.sendMail(mailOptions, function(error, response){
        if(error){
           return res.send(error);
        }
        else{
            res.send({
                state:'success',
                message:"Send"
            });
        }
    });
})
&#13;
&#13;
&#13;

&#34;

1 个答案:

答案 0 :(得分:0)

您正在发送“数据”作为文件的内容。如果右键单击您的文件,然后选择用记事本(或基本文本编辑器)打开,您将看到。

如果您使用content选项,Nodemailer的附件期望接收文件的数据。您可能更喜欢使用path,它可以是文件路径或URL。

了解更多here

您的附件:

attachments: [
    {   
        'filename':filename1,
         'content': 'data',
         'contentType':'application/pdf',
         'contentDisposition':'attachment'
    }
]

应该更接近:

attachments: [
    {   
        'filename':filename1,

         //Either get filecontent
         'content': filecontent,
         //Or the file full path
         'path':filepath,

         'contentType':'application/pdf',
         'contentDisposition':'attachment'
    }
]