You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gmail插件中将含附件的邮件转换为Blob格式

解决方案

一、邮件正文转Blob

getBody()返回的是HTML格式字符串,你可以用Utilities.newBlob()将其转换为Blob对象,指定对应的MIME类型:

function loadAddon(event){
    var accessToken = event.gmail.accessToken;
    var messageId = event.gmail.messageId;
    GmailApp.setCurrentMessageAccessToken(accessToken);
    var mailMessage = GmailApp.getMessageById(messageId);
    
    // 将邮件正文转换为Blob
    var emailContent = mailMessage.getBody();
    var bodyBlob = Utilities.newBlob(emailContent, 'text/html', '邮件正文.html');
    console.log('正文Blob:', bodyBlob);
}

二、邮件附件转Blob

Gmail插件中,mailMessage.getAttachments()方法直接返回Blob对象数组,无需额外转换:

function loadAddon(event){
    var accessToken = event.gmail.accessToken;
    var messageId = event.gmail.messageId;
    GmailApp.setCurrentMessageAccessToken(accessToken);
    var mailMessage = GmailApp.getMessageById(messageId);
    
    // 获取所有附件的Blob对象
    var attachments = mailMessage.getAttachments();
    attachments.forEach(function(attachmentBlob, index){
        console.log(`第${index+1}个附件Blob:`, attachmentBlob);
        // 可在此处对Blob进行后续操作(如上传到云端、存储等)
    });
}

三、将正文+附件打包为ZIP Blob

如果需要把整个邮件内容(正文+附件)合并成一个Blob,可使用Utilities.zip()创建ZIP格式的Blob:

function loadAddon(event){
    var accessToken = event.gmail.accessToken;
    var messageId = event.gmail.messageId;
    GmailApp.setCurrentMessageAccessToken(accessToken);
    var mailMessage = GmailApp.getMessageById(messageId);
    
    // 准备要打包的Blob列表
    var blobsToZip = [];
    // 添加正文Blob
    var bodyBlob = Utilities.newBlob(mailMessage.getBody(), 'text/html', '邮件正文.html');
    blobsToZip.push(bodyBlob);
    // 添加附件Blob
    blobsToZip = blobsToZip.concat(mailMessage.getAttachments());
    
    // 创建ZIP格式的Blob
    var zipBlob = Utilities.zip(blobsToZip, '邮件内容打包.zip');
    console.log('打包后的ZIP Blob:', zipBlob);
}

关键API说明

  • Utilities.newBlob(data, contentType, name):将字符串、字节数组等数据转换为Blob对象,需指定MIME类型和文件名。
  • GmailMessage.getAttachments():返回邮件所有附件的Blob对象数组,每个对象包含附件的名称、大小、MIME类型等属性。
  • Utilities.zip(blobs, zipName):将多个Blob打包为一个ZIP格式的Blob,适合批量处理邮件内容。

内容的提问来源于stack exchange,提问作者Shiv Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:52:17