Node.js和Nodemailer:我们可以将PDF文档附加到电子邮件吗?

我想要使​​用nodemailer和node.js附加PDF文档,但是,我发现附件与nodemailer的唯一示例是与.txt文件( 在这里 )。

有谁知道PDF文档附件是否支持nodemailer?

最初它似乎可以附加PDF,但通过电子邮件到达的PDF文件似乎被损坏(见图片)。

在这里输入图像描述

代码:(改编自Mahesh的回答)

fs.readFile('/filePath/fileName.pdf', function (err, data) { if (err) throw err; var mailOptions = { from: 'Test <formEmail@gmail.com>', // sender address to: 'toPersonName <toEmail@gmail.com>', // list of receivers subject: 'Attachment', // Subject line text: 'Hello world attachment test', // plaintext body html: '<b>Hello world attachment test HTML</b>', // html body attachments: [ { filename: 'fileName.pdf', contentType: 'application/pdf' }] }; // send mail with defined transport object transporter.sendMail(mailOptions, function(error, info){ if(error){ return console.log(error); } console.log('Message sent: ' + info.response); }); console.log(data); }); 

terminal响应:

 <Buffer 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 34 20 30 20 6f 62 6a 0a 3c 3c 20 2f 4c 65 6e 67 74 68 20 35 20 30 20 52 20 2f 46 69 ... > Message sent: 250 2.0.0 OK 1443026036 hq8sm3016566pad.35 - gsmtp 

是的你可以。 您必须添加您要附加的文件的path。

 transporter.sendMail({ from: 'foo@bar.com'. to: 'bar@foo.com', subject: 'an attached file', text: 'check out this attached pdf file', attachments: [{ filename: 'file.pdf', path: 'C:/Users/Username/Desktop/somefile.pdf' contentType: 'application/pdf' }], function (err, info) { if(err){ console.error(err); res.send(err); } else{ console.log(info); res.send(info); } } );