【发布时间】:2020-05-28 12:02:35
【问题描述】:
我目前正在尝试使用 nodejs 向客户发送附有 pdf 发票的电子邮件,但我不知道如何从 invoice_pdf 字段获取 pdf 文件。
我尝试了fs、got 和request,但我无法获得文件内容。
例如我试过:
let file = await got(invoice.invoice_pdf)
let fileContent = Buffer.from(file['body'])
...
// mail conf
attachments: [{
'type': 'application/pdf',
'name': invoice.number + '.pdf',
'content': fileContent.toString('base64'),
}],
收到的电子邮件附有一个pdf,但它是一个没有内容的空白页。
有什么帮助吗?
非常感谢
【问题讨论】:
-
这个问题的答案取决于您的邮件服务期望 pdf 附件的格式。您能否分享您正在使用的工具的文档?不过,一般的方法是使用 axios 之类的库发出 GET 请求以获取 PDF 数据,然后将其作为附件传递给您的电子邮件服务。
-
嗨 ttmarek,我刚刚使用 Mandrill 的附件文档编辑了我的帖子。我用提供的示例测试了我的代码,它运行良好。我真的认为问题出在我的
fileContent上,因为invoice_pdf并不直接指向实际文件,而是指向在浏览器中动态生成和下载文件的页面 -
我怀疑这个问题与您使用
got检索 PDF 的方式有关。我对那个图书馆不太熟悉。可能值得在项目 repo 上提出一个问题,询问在 base64 中获取 PDF 的规范方法是什么。