Javascript 使用谷歌应用程序脚本在Gmail中嵌入图像
我正在尝试从gmail邮件中获取内联图像,并在web应用程序中使用HTML服务显示它们。我使用regex从原始内容(包含base64编码的图像)中获取img标记,并使用该内容渲染图像。但是,每当电子邮件有4个或更多图像标记时,字符串“3D”将添加在任何“=”之后,并且正则表达式匹配返回null 电子邮件中的img标签示例,其中包含3个图像:Javascript 使用谷歌应用程序脚本在Gmail中嵌入图像,javascript,html,regex,google-apps-script,google-api,Javascript,Html,Regex,Google Apps Script,Google Api,我正在尝试从gmail邮件中获取内联图像,并在web应用程序中使用HTML服务显示它们。我使用regex从原始内容(包含base64编码的图像)中获取img标记,并使用该内容渲染图像。但是,每当电子邮件有4个或更多图像标记时,字符串“3D”将添加在任何“=”之后,并且正则表达式匹配返回null 电子邮件中的img标签示例,其中包含3个图像: 电子邮件中的img标签示例,其中包含4幅图像: 我尝试了几种不同的正则表达式模式,包括: 和 (.*)? 这两种方法都适用于任何包含3个图像的电子邮件
电子邮件中的img标签示例,其中包含4幅图像:
我尝试了几种不同的正则表达式模式,包括:
和
(.*)?
这两种方法都适用于任何包含3个图像的电子邮件,但不适用于4个或更多图像。是什么导致添加“3D”以及如何解决此问题? 3D是“=”的ASCII码,我想可能与此有关。
谢谢 EDIT:我认为导致正则表达式失败的问题与字符串的编码有关。当我收到一封包含3个或更少图像的电子邮件的原始内容时,它在html内容上方有以下一行文本:
内容类型:text/html;字符集=ISO-8859-1
一旦电子邮件中出现第四幅图像,就会显示:
内容类型:text/html;字符集=ISO-8859-1
内容传输编码:引用可打印的
有没有人有过这样的经验,以及如何避免这种情况?试试这个,这是一种很有技巧的方法,但可能会奏效。如果将整个源代码作为字符串获取,请尝试在字符串上使用javascript SPLIT,并使用=3D作为拆分。这将使用=3D作为分隔符将字符串拆分为数组。然后使用JOIN将数组重新连接回1个字符串,使用just=作为分隔符
arr = string.split("=3D");
newstring = arr.join("=");
我通常喜欢正则表达式,但最近我一直在使用这种方法去除长字符串中的重复元素,我一直在使用它,并且发现它非常有效。如果=3D出现在您的用例之外,则会有一个缺点。通过使用正则表达式手动删除一些不必要的“=”符号,然后将RAW内容视为从未编码过,从而解决了这个问题。这是一个小问题,我仍然不知道为什么第四个内联图像会导致消息编码不同谢谢你的回答,这确实去掉了3Ds,但正则表达式匹配仍然返回null,仅对于具有4个或更多图像的rawContent,我开始怀疑这是否是一个应用程序脚本错误。。。