GMAIL API NodeJs

Posted

技术标签:

【中文标题】GMAIL API NodeJs【英文标题】: 【发布时间】:2021-11-10 02:45:24 【问题描述】:

我已经设置了一个 gmail api 服务来查询我的电子邮件。我的连接已建立,我只是想下载一个文件附件。我找到文件没有问题。我遇到的障碍是能够将文件下载到我的本地驱动器中,以便我可以使用 js 执行一些数据清理。我的代码如下。 fileAttachment.value 返回文件的名称,但我想下载 .htm 文档的内容。感谢您的帮助。

//This api call will fetch the mailbody.
      this.gmail.users.messages.get(
            'userId': this.me,
            'id': msgId
        , (err, res) => 
            if(!err)
                // console.log(res.data.payload)
                
                // var htmlBody = base64.decode(body.replace(/-/g, '+').replace(/_/g, '/'));
                // var mailparser = new Mailparser();
                let body = res.data.payload.headers;

                let fileAttachment = body.find(r => r.name === 'Content-Disposition')

                console.log(fileAttachment.value)

                
            
        );
    

【问题讨论】:

【参考方案1】:

更新:工作解决方案。

    getMail(msgId, attachmentId, size,callback)
        //This api call will fetch the mailbody.
        this.gmail.users.messages.get(
            'userId': this.me,
            'id': msgId,
            'attachmentId': attachmentId,
            'size':size
        , (err, res) => 
            if(!err)
                // console.log(res.data.payload)

                let getCurrentDate = new Date();

                getCurrentDate = getCurrentDate.setDate(getCurrentDate.getDate()-1); 

                getCurrentDate = new Date(getCurrentDate);

                console.log(getCurrentDate)
                
                msgId = res.data.id;
                
                attachmentId = res.data.payload.body.attachmentId;

                size = res.data.payload.body.size; 
                

                this.gmail.users.messages.attachments.get(
                    "userId": this.me,
                    "messageId": msgId,
                    "id": attachmentId
                ).then(res => 

                    const buff = Buffer.from(res.data.data, 'base64');

                    fs.writeFileSync('./data/cooler-report.htm', buff)

                    console.log(`Cooler Report File for $getCurrentDate created!`)

                ).catch(error => 
                    console.log(`Error converting file $error`)
                )
            
        );
    

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于GMAIL API NodeJs的主要内容,如果未能解决你的问题,请参考以下文章

在java中使用对象com.google.api.services.gmail.model.Message读取gmail消息正文?

Gmail现在支持安排电子邮件,如何使用gmail rest api工作,还是api支持此功能?

尝试通过 API 删除 gmail 邮件时出现 401 错误

使用相同控制台应用程序的 Gmail REST API 和 Gmail IMAP 的 API 配额

Gmail 收件箱 API

Google 工作区:通过 API 激活 gmail