电子邮件中是否支持 JavaScript?

IT技术 javascript email
2021-01-15 17:36:36

电子邮件中是否支持 JavaScript?

6个回答

http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients

旧客户端,例如 Lotus Notes、Mozilla Thunderbird、Outlook Express 和 Windows Live Mail,似乎都支持某种 JavaScript 执行。其他什么都不做。

从安全角度来看,这似乎是一个坏主意,所以我希望这是一个并不总是存在的功能,即使在这些客户端中也是如此。

哇,这些客户现在太老了,关于他们过去行为方式的链接正在消失,我无法确认或否认其中任何一个。六年后,如果有一个仍在使用的电子邮件客户端有意启用了任何类型的脚本执行,我会感到惊讶。
2021-03-27 17:36:36
“Lotus Notes、Mozilla Thunderbird、Outlook Express 和 Windows Live Mail 似乎都支持某种 JavaScript 执行”——在消息模板脚本中,而不是在收到的电子邮件中。
2021-04-02 17:36:36

简答


描述性答案

这取决于。但不能保证电子邮件会按照您希望的方式运行。不同的电子邮件客户端以不同的方式处理 JS。大多数较新的电子邮件客户端都不支持其中任何一项,因为在包含大量个人信息的桌面应用程序中支持脚本执行可能非常危险。

我有一个用例,我需要在电子邮件中使用 JS。我也在 Outlook 和桌面客户端的 Web 客户端上进行了尝试,结果 Outlook 只是清除了 HTML 电子邮件的脚本部分。可能还有其他一些支持 JS 执行的电子邮件客户端,但鉴于您无法控制在客户端机器中查看电子邮件的客户端,因此在 HTML 电子邮件中嵌入任何脚本并不是一个好主意。

建议让您的 HTML 电子邮件尽可能简单,不要使用 JS,并且可以使用最少的 CSS(因为,同样,不同的电子邮件客户端对 CSS 的支持也不同)例如:outlook 的 Web 客户端甚至无法识别 HTML电子邮件中的按钮标签。我不得不使用锚标记和一些 CSS 来模拟按钮的显示。


底线 - 在处理 HTML 电子邮件内容时不要依赖 Javascript。

我还没有在这些平台上进行过测试,但是 Outlook 的 Web 版本阻止了我的所有 JS 代码。我想这主要是为了限制发送者以有害的方式与接收者进行交互。
2021-03-25 17:36:36
@softyodayoann Webmail 不允许在电子邮件中使用 JavaScript 没有技术原因,但这是一个巨大的安全风险,因此他们有一个很好的商业理由禁止它。当然,在他们从原始电子邮件中删除任何 JS 之后,他们可以重新添加自己的 JS 以跟踪您的交互。
2021-03-25 17:36:36
像 hotmail 和 gmail 以及 protonmail 这样的基于网络的网络邮件呢?他们可以执行任何类型的 JS 还是他们有任何其他方式与您互动?(例如知道您何时打开带有图像的签名邮件,该邮件仅托管给您的服务器,以及当有人尝试访问时的记录?)(或其他我不知道的事情)
2021-04-04 17:36:36

不,一般来说电子邮件阅读器不允许使用 javascript。

@NicolasS.Xu Gmail 会在将邮件交给浏览器之前从邮件中删除 JavaScript。所以JS不起作用。我在 Firefox 56 和 Chrome 61 中测试了 Gmail。还检查了站长工具中的代码,JS 代码被删除。
2021-03-13 17:36:36
chrome浏览器中的gmail怎么样?
2021-03-16 17:36:36

其他回答者建议答案是否定的。

另一方面,html 附件可能会在运行 Javascript 的环境中打开。

编辑:有人建议我没有正确回答这个问题,所以这里有一个更完整的努力。

简介: 我希望许多或大多数用户收到一封包含嵌入式 Javascript 的 html 格式的电子邮件,会看到它运行并运行测试以确认这在某些环境中是正确的。但是 Javascript 将被某些用户阻止。

协议(特别是 RFC2854)使用以下语句明确解决脚本编写(在 text/html 消息正文类型内):

此外,HTML 4.0 中脚本语言和交互功能的引入引入了许多与自动执行由发送者编写但由接收者解释的程序相关的安全风险。执行此类脚本或程序的用户代理必须非常小心,以确保不受信任的软件在受保护的环境中执行。

所以这些协议确实支持 Javascript,但是哪些用户代理呢?

我的(古老的)电子邮件阅读器使用一个表格来指定每个 mimetype 使用哪个查看器软件,将 html 内容转移到我最喜欢的 web 浏览器。几乎所有当前的 Web 浏览器都支持 Javascript(并且在您尝试关闭它时会发出可怕的警告!)现代电子邮件代理是否包含内部 html 解释器,如果是,javascript 是打开还是关闭?我检查了有关 Thunderbird 的文档,发现 javascript 似乎默认打开但可以关闭:http : //codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160

我注意到一些(?许多?)用户现在直接从浏览器访问他们的电子邮件(网络邮件就是一个这样的平台),而不是运行单独的电子邮件软件。到目前为止,我测试过的所有此类平台都运行嵌入在电子邮件消息的 html 中的任何 Javascript。然而,根据用户安全设置,某些此类环境不会自动获取外部链接(Javascript 或图片或其他),因此只能从作为邮件附件包含的文件运行外部 Javascript。对于没有当前互联网连接的设备上的任何离线电子邮件阅读器,情况也是如此。

以上适用于嵌入在电子邮件正文的主要消息部分中的 javascript。还可以将 html 明确指定为“附件”,如果保存然后打开,将显示在 Web 浏览器中,其中 Javascript 很有可能可用。因此,可以将启用 javascript 的电子邮件的第二个副本作为 html 附件包含在主文本/html 中的替代文本/纯正文和/或标签中,将用户引导至附件。

我一直在考虑这个,因为我的一些熟人坚持给我发送“电子邮件贺卡”,其中包含一条短信,将我定向到一个链接,我觉得这个链接很不满意,我什至拒绝考虑加载它只是原则上. 我已经编写并发送了带有交互式图形和音乐的电子邮件贺卡,甚至是使用嵌入式 javascript 的游戏,并且对结果感到满意。

因此,我认为正确的答案是“是”,因为协议专门针对脚本编写,而且我个人使用的所有电子邮件代理都在我的测试电子邮件中运行了 Javascript。

由于您指向 Thunderbird“文档”的链接根本不是文档而是指一些用户贡献的问题,因此我搜索了一些官方文档并找到了:developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases /3 - 它说电子邮件中的 JS 在 Thunderbird 3 中被丢弃。
2021-03-11 17:36:36
您没有提供任何具体的客户端列表,您在其中成功测试了 JS 以及使用了哪些 JS 代码。我使用“原始 HTML”设置检查了 Thunderbird 52.4.0,它确实忽略了<script> document.write('test'); </script>我测试电子邮件中的 JS Outlook for Android 2.2.44、K-9 for Android 5.208、Gmail webmailer(06.11.2017 测试)和 Roundcube webmailer 0.9.5 相同。所以我同意那些说它在大多数(现代)客户中不起作用的人。确实,大多数用户都使用网络邮件程序,但有一个很好的理由,它们似乎在将消息交给浏览器之前从消息中去除了 JS。
2021-03-15 17:36:36

您不会将可执行的 JavaScript 放到服务器和邮件客户端中。但是电子邮件确实支持链接,您始终可以在电子邮件中链接到您的内容。