【发布时间】:2020-01-03 23:21:34
【问题描述】:
我们的目标是让用户在表单中输入一些信息并将其输出到 PDF 中。我正在使用 JSPDF 来解析和创建 PDF。我已经成功获得了制作可打印 PDF 的代码,但为了不让纸张在办公室里四处飘荡,我创建了一个云功能,将 PDF 通过电子邮件发送给客户。
这是我在前端的代码。 maildoc 是我制作的pdf,它没有被打印或任何东西。所以它只存在于内存中。
mailDoc = mailDoc.output('datauri');
mailFunction += "&?data=" + mailDoc;
//axios request to the cloud function
axios.get(mailFunction).then( function (response) {
console.log(response);
}).catch(function (error) {
console.log(error)
})
这是我在云功能上的代码
exports.sendMail = functions.https.onRequest((req, res) => {
cors(req, res, () => {
// getting dest email by query string
//?dest= DestinationEmail
const dest = req.query.dest;
const data = req.query.data;
const mailOptions = {
from: 'whatever <whatever@hoobashaka.com>',
to: dest,
subject: "You're Equipment Return to HBCI", // email subject
attachments :[
{
filename: 'return.pdf',
contentType: 'application/pdf',
path: data,
}
],
};
return transporter.sendMail(mailOptions, (erro, info) => {
if(erro){
return res.send(erro.toString());
}
return res.send('Sended');
});
});
如果我尝试通过 URI 发送数据,我会收到 413 错误,可能是因为该 URI 很大。但我想不出另一种将生成的 PDF 发送到函数的方法。
【问题讨论】:
-
是否可以改为发送 POST 请求并在正文中而不是在 URI 上发送数据
标签: javascript firebase google-cloud-functions jspdf nodemailer