Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用谷歌应用程序脚本在Gmail中嵌入图像_Javascript_Html_Regex_Google Apps Script_Google Api - Fatal编程技术网

Javascript 使用谷歌应用程序脚本在Gmail中嵌入图像

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个图像的电子邮件

我正在尝试从gmail邮件中获取内联图像,并在web应用程序中使用HTML服务显示它们。我使用regex从原始内容(包含base64编码的图像)中获取img标记,并使用该内容渲染图像。但是,每当电子邮件有4个或更多图像标记时,字符串“3D”将添加在任何“=”之后,并且正则表达式匹配返回null

电子邮件中的img标签示例,其中包含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,我开始怀疑这是否是一个应用程序脚本错误。。。