【问题标题】:GAS Not getting image of mail in web page: Receiving error "ERR_UNKNOWN_URL_SCHEME"GAS 未在网页中获取邮件图像:收到错误“ERR_UNKNOWN_URL_SCHEME”
【发布时间】:2019-09-12 09:36:33
【问题描述】:

我正在使用 Google Apps 脚本的 GmailApp 类来获取邮件正文并以 html 格式显示。

正文没问题,但邮件错误:

ERR_UNKNOWN_URL_SCHEME。

有没有办法检索整个邮件正文,包括图片?

代码 GS:

function GetBodyMail(){

  var thread = GmailApp.getThreadById("16cfd66654bb9593") ;
  var mgs = thread.getMessages();
  var mgsBody = mgs[0].getBody();

  return mgsBody;
  
}

控制台窗口:

正文邮件的元素窗口:

收件箱 gmail 窗口:

【问题讨论】:

  • 您是否尝试过使用getAttachments() method of GmailMessage 并将includeInlineImages 参数设置为true
  • 另外,您将mgsBody 还给什么?您如何尝试显示从您发布的功能中获得的电子邮件内容?我无法简单地通过将内联图像附加到邮件并使用您的示例中的 getBody() 方法来重现该错误。
  • @RafaGuillermo 感谢您回答我的问题。我返回 mgsBody 以在 HTML(网页)上查看它。我还是不明白你的方式,你能再给我解释一下吗?
  • 从您的屏幕截图中,我可以看到您通过getBody() 方法检索的HTML 内容包含cid:image001.png@01D563D1.99511440,这不是<img> 标记中图像的有效来源。 Gmail 邮件中的图像不与面向公众的 URL 一起存储,因此您必须通过调用 getAttachments() 方法单独获取附件,然后通过脚本将图像插入 HTML 内容,然后在末尾返回 mgsBody函数。
  • 你可以做一些事情,比如将它们转换为 URI,当你访问你的 HTML 页面时,浏览器会显示这些 URI,尽管 GMail 不支持消息正文中的数据 URI。嵌入在正文中的图像被 GMail 视为附件,因此您可以使用getAttachments() 方法从邮件中提取图像。

标签: google-apps-script gmail gmail-api


【解决方案1】:

您可以从 Gmail 邮件中获取嵌入的图像,并将其附加到来自mgs[0].getBody() 的 HTML 响应的末尾。

getAttachements() 方法的返回类型是[GmailAttachment]s 的数组,因此您可以获取以字节为单位的图像数据,并制作一个可以放入<img> 标记的数据URI 字符串作为来源:

function GetBodyMail(){

  var thread = GmailApp.getThreadById("thread-id");
  var mgs = thread.getMessages();
  var mgsBody = mgs[0].getBody();
  var attachments = mgs[0].getAttachments();

  mgsBody = mgsBody + "<br> <img src='data:" + attachments[0].getContentType() + ";base64," + Utilities.base64Encode(attachments[0].getBytes() + "'>");

  return mgsBody;

}

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多