我看到了这个问题,但是我的代码似乎略有不同,无法正常工作。 Sending a PDF created dynamically as an attachment using PDFKit in a nodejs application
主要区别在于我是从后端而非浏览器发送电子邮件。
还要注意,生成的文件一般都很好,因此将其传递给电子邮件可能是一个问题。
const Email = require('email-templates');
const PdfKit = require('pdfkit');
const SVGToPDF = require('svg-to-pdfkit');
const fs = require('fs');
const service = new Email({
message: {
from: 'aaron.test@gmail.com'
},
send: true
transport: require('../config/smtp.json') // my smtp config. Works without attachment
});
function generatePdfAndSend() {
var doc = new PdfKit();
const stream = doc.pipe(fs.createWriteStream("output.pdf"));
doc.font('backend/fonts/MADE Canvas Regular PERSONAL USE.otf')
.fontSize(25)
.text('sample text', 100, 100);
fs.readFile('backend/images/Happy Easter 5.svg', 'utf8', (err, contents) => {
SVGToPDF(doc, contents, 100, 200, {});
doc.end();
stream.on('finish', function() {
sendEmail("templateName", "myEmail", doc);
});
});
}
function sendEmail(template, to, attachment) {
service.send({
template: template,
message: {
to: to,
attachments: [
{
filename: 'text1.pdf',
content: attachment,
contentType: 'application/pdf'
}
]
},
locals: vars
})
.then(console.log).catch(console.error);
}
答案 0 :(得分:0)
我在文档中看不到任何允许将对象作为附件传递的内容。
不是将PdfKit对象传递给sendEmail函数。传递磁盘上用于输出文件的位置。
答案 1 :(得分:0)
我使用以下命令,注意path是保存的pdf的路径,附件是附件对象的数组,它的作用就像一个超级魅力
attachments:[{
filename:'reports.pdf',
path: __dirname+'/files/output.pdf'//,
//contentType: 'application/pdf'
}]