【发布时间】:2013-12-16 17:27:52
【问题描述】:
我正在尝试从 gmail 消息中获取内联图像,并在 Web 应用程序中使用 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
有没有人有这方面的经验以及如何解决它?
【问题讨论】:
标签: javascript html regex google-apps-script google-api