0

我有一个 PDF 并获取其内容并将其存储在 Blob 中。但是,我无法使用 MailApp.sendEmail() 将此 blob 作为电子邮件的附件附加。选项的附件参数显示“要在电子邮件中发送的文件。每个项目都是具有以下属性的 JavaScript 对象:字符串文件名、字符串 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);
      }
4

2 回答 2

1

尽管文档说附件内容必须是字符串,但它也接受字节数组。这是有效的代码

      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)
      }
于 2012-11-05T19:04:33.997 回答
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});
}
于 2012-11-05T21:18:48.990 回答