gpt4 book ai didi

node.js - Google Drive API 在电子邮件中发送 PDF 附件

转载 作者:行者123 更新时间:2023-12-05 05:42:52 26 4
gpt4 key购买 nike

我有一些使用 Google Drive API drive.files.get() 读取 PDF 文件的 node.js 代码...(这是一个来 self 们的 Google 团队/共享的文件驱动器)。我使用如下内容将返回的流转换为单个 base64 数据 block :

    // read using drive.files.get() into 'pdfStream'
//...
let pdf64 = '';

pdfSream.on('readable', function () {
var chunk = pdfStream.read();

if (chunk != null) {
var chunk64 = chunk.toString('base64');
pdf64 += chunk64;
}
});
pdfStream.on('end', function () {
// Do SendGrid email with pdf64 as attachment
});

请注意,最终目标是发送带有 PDF 的电子邮件。我没有包含太多代码,因为这一切都很好 - 只要电子邮件收件人在我们公司的域中。对于外部电子邮件收件人,PDF 附件是不可查看且无法下载的 - 至少看起来是这样。

我认为访问限制和权限不会保留在使用 drive.files.get() 直接读取的数据中。这是一件事吗?我会怀疑 SendGrid,除非我们在代码的其他区域发送附件没有问题。

有什么想法吗?非常感激!~鲍勃

最佳答案

我能够修复它。权限问题是一个转移注意力的问题——pdf 附件已损坏,我们公司的电子邮件系统对错误的处理比其他系统(如 Gmail)更宽松。我重构了上面的代码,首先创建一个完整的数据数组,然后将该数组转换为 base64:

    // read using drive.files.get() into 'pdfStream'
//...
let pdfChunks = [];

// Read through stream chunks and concat them together
pdfStream.on('readable', function () {
var chunk = pdfStream.read();

if (chunk != null) {
pdfChunks.push(chunk);
}
});
// On the end of the stream, convert to base64 and email the Pdf
pdfStream.once('end', function () {
let pdfBin = Buffer.concat(pdfChunks);
let pdf64 = pdfBin.toString('base64');
//...
// Do SendGrid email with pdf64 as attachment
});

干杯!~鲍勃

关于node.js - Google Drive API 在电子邮件中发送 PDF 附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71934175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com