MailApp.sendEmail中的Blob附件?

时间:2012-11-05 18:59:05

标签: google-apps-script

我有一个PDF并获取其内容并将其存储在Blob中。但是,我无法使用MailApp.sendEmail()将此blob作为附件添加到电子邮件中 附件的附件说明了 “要通过电子邮件发送的文件。每个项目都是具有以下属性的JavaScript对象:String fileName,String mimeType(可选)和字符串内容。”

虽然,我可以将mimeType设置为'application / pdf',但它不起作用 - 可能是因为涉及到编码。 这是一个示例代码

     var resp = UrlFetchApp.fetch(link); 
      if (resp.getResponseCode() == 200){
        var blob = Utilities.newBlob(resp.getContent());
        Logger.log(blob.getDataAsString());
        //            var pdf = blob.getAs('application/pdf'); 
        var options = {'attachments' : 
                       {'fileName' : 'test',
                        'mimeType' : 'application/pdf',
                        'content' : blob.getDataAsString() //Doesn't work 
                       }
                      };
        MailApp.sendEmail(TO_EMAIL, 'Subject','', options);
      }

2 个答案:

答案 0 :(得分:1)

虽然文档说附件内容必须是String,但它也接受字节数组。这是适用的代码

      var resp = UrlFetchApp.fetch(link); 
      if (resp.getResponseCode() == 200){
        var blob = Utilities.newBlob(resp.getContent());
        Logger.log(blob.getDataAsString());
        //            var pdf = blob.getAs('application/pdf'); 
        var options = {'attachments' : 
                       {'fileName' : 'test',
                        'mimeType' : 'application/pdf',
                        'content' : blob.getBytes()
                       }
                      };
        MailApp.sendEmail(TO_EMAIL, 'Subject','', options)
      }

答案 1 :(得分:1)

我们需要更新这些文档......您实际上可以直接附加Blob而无需具有文件名,mimetype等的对象。

 var resp = UrlFetchApp.fetch("www.google.com"); 
 if (resp.getResponseCode() == 200){

FetchResponse对象(也就是我们称之为'resp'的变量)上有“getBlob”方法,这意味着你可以在任何你想要使用blob的地方使用它而不做任何特殊的事情:

   MailApp.sendEmail(TO_EMAIL, 'Subject', '', {attachments: resp});

或者,您可以从FetchResponse获取显式Blob, 这只是一个很好的数据包装,有一些额外的方法。 这样做的唯一明显原因是更改文件名或mime类型, 虽然请注意UrlFetchApp已将这些设置为合理的默认值 (例如,如果你下载了一个名为MyFile.pdf的pdf,那么名称和mime类型已经为你设置为'MyFile.pdf'和'application / pdf'。)

   var blob = resp.getBlob();
   blob.setName('test');
   MailApp.sendEmail(TO_EMAIL, 'Subject', '', {attachments: blob});
}