javascript - 使用 Google Apps 脚本在 Gmail 中内嵌图像

标签 javascript html regex google-apps-script google-api

我正在尝试从 Gmail 消息中获取内联图像,并在网络应用程序中使用 HTML 服务显示它们。我使用正则表达式从原始内容(包含 base64 编码图像)中获取 img 标签,并使用该内容来渲染图像。但是,只要电子邮件具有 4 个或更多图像标签,就会在任何“=”之后添加字符串“3D”,并且正则表达式匹配返回 null。

来自电子邮件的 img 标签示例,其中包含 3 个图像:

<img src="cid:ii_142faccc53cb2211" alt="Inline image 3" width="564" height="510">

来自电子邮件的 img 标签示例,其中包含 4 个图像:

<img src=3D"cid:ii_142face6aa5d8d86"= alt=3D"Inline image 2" width=3D"564" height=3D"317">

我尝试了几种不同的正则表达式模式,包括:

<img(?:(?:.|\n)*?)\/?><img.*?>(.*?<\/img>)? 这两者都适用于任何包含 3 个图像的电子邮件,但不适用于 4 个或更多图像。
是什么导致添加“3D”?如何解决此问题? 3D是“=”的ASCII码,我认为这可能与它有关。
谢谢

编辑:我认为导致正则表达式失败的问题与字符串的编码有关。当我收到包含 3 个或更少图像的电子邮件的原始内容时,它在 html 内容上方有以下文本行:
Content-Type: text/html; charset=ISO-8859-1
一旦电子邮件中出现第四张图片,就会出现:
Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
有人有这方面的经验以及如何解决它吗?

最佳答案

通过使用正则表达式手动删除一些不必要的“=”符号,然后将 rawContent 视为从未被编码,成功解决了这个问题。有点黑客攻击,我仍然不确定为什么第四个内联图像会导致消息编码不同

关于javascript - 使用 Google Apps 脚本在 Gmail 中内嵌图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616928/

相关文章:

javascript - 尝试从函数返回一个对象

javascript - 悬停不适用于动画 div

JavaScript:调用函数时表单 onSubmit 不起作用 'submit'

php - 使用 php mysql 按类别搜索

javascript - 我怎样才能听到输入的变化然后改变文本?

javascript - 从电子表格公式中提取有效单元格引用的正则表达式

javascript - Bower 安装 arcgis-js-api 失败(无法找到适合 dojo 的版本)

python - 如何在 lxml xpath 中使用正则表达式?

javascript - RegExp 限制除数字及其后的几个字母(如果它们持续存在)之外的所有符号

javascript - 更改页面上的所有链接