电子邮件中是不是支持 JavaScript?
Posted
技术标签:
【中文标题】电子邮件中是不是支持 JavaScript?【英文标题】:Is JavaScript supported in an email message?电子邮件中是否支持 JavaScript? 【发布时间】:2011-03-04 12:23:34 【问题描述】:电子邮件中是否支持 javascript?
【问题讨论】:
这不值得 -1 目标电子邮件程序是 Outlook 吗?雷鸟?邮箱?热邮件?上述所有的?其他的?不同的电子邮件程序以不同的方式呈现邮件。 我刚刚看到,rockettheme 的人正在倒计时,所以几天几小时几分几秒,图形也在动画......现在有什么惊人的可能。不知道他们还能怎么做。在mac邮件客户端中观察到。 我找到了一个域并得到了这个 - motionmailapp.com @landed 我刚刚在一封来自 WordPress 的电子邮件中看到了同样的内容。原来它只是一个动态生成的 GIF,它从获取时开始倒计时(它会在 45 秒后重置——我猜如果你在 45 秒内没有点击,你可能已经关闭了电子邮件)。跨度> 【参考方案1】:不,一般来说电子邮件阅读器不允许使用 javascript。
【讨论】:
chrome浏览器中的gmail怎么样? @NicolasS.Xu Gmail 在将其交给浏览器之前会从邮件中删除 JavaScript。所以JS不起作用。我在 Firefox 56 和 Chrome 61 中测试了 Gmail。还检查了站长工具中的代码,JS 代码被删除。【参考方案2】:对于大多数邮件客户端,没有。
【讨论】:
【参考方案3】:电子邮件不支持 Javascript。
【讨论】:
这不是真的。至少 Outlook 和 Outlook Express 支持 Javascript,这是避免它们的众多原因之一(出于安全原因)。 @PauliL:这取决于您的受限站点区域设置是否允许。【参考方案4】:可能是,但邮件客户端不会读取它并且邮件服务器可能会拒绝它。所以别说了。
【讨论】:
【参考方案5】:您不会将可执行的 JavaScript 放到服务器和邮件客户端中。但是电子邮件确实支持链接,您始终可以在电子邮件中链接到您的内容。
【讨论】:
【参考方案6】:http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients
旧客户端,例如 Lotus Notes、Mozilla Thunderbird、Outlook Express 和 Windows Live Mail 似乎都支持某种 JavaScript 执行。没有别的了。
从安全角度来看,这似乎是个坏主意,所以我希望这是一个不会一直存在的功能,即使在这些客户端中也是如此。
【讨论】:
“Lotus Notes、Mozilla Thunderbird、Outlook Express 和 Windows Live Mail 似乎都支持某种 JavaScript 执行”——在消息模板脚本中,而不是在收到的电子邮件中。 哇,这些客户现在太老了,关于他们过去行为方式的链接正在消失,我无法确认或否认任何一个。六年后,如果还有一个仍在使用的电子邮件客户端故意启用任何类型的脚本执行,我会感到惊讶。【参考方案7】:其他回答者建议答案是“否”。
另一方面,html 附件可能会在运行 Javascript 的环境中打开。
编辑:有人建议我没有正确回答这个问题,所以这里需要更完整的努力。
总结:我希望许多或大多数用户收到包含嵌入式 Javascript 的 html 格式的电子邮件时会看到它运行并运行测试以确认这在某些环境中是正确的。但是 Javascript 将被某些用户阻止。
协议(特别是 RFC2854)通过以下语句显式处理脚本(在 text/html 消息正文类型中):
此外,引入脚本语言和 HTML 4.0 中的交互功能引入了许多 与程序自动执行相关的安全风险 由发送者编写,但由接收者解释。用户 执行此类脚本或程序的代理必须非常小心 确保不受信任的软件在受保护的环境中执行 环境。
所以协议确实支持 Javascript,但哪些用户代理支持?
我的(古老的)电子邮件阅读器使用一个表格来指定每个 mimetype 使用哪个查看器软件,将 html 内容转移到我最喜欢的网络浏览器。几乎所有当前的 Web 浏览器都支持 Javascript(当您尝试将其关闭时,有些会发出可怕的警告!)现代电子邮件代理是否包含内部 html 解释器,如果是,javascript 是打开还是关闭?我检查了关于 Thunderbird 的文档,发现 javascript 似乎默认打开但可以关闭:http://codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160
我注意到一些(?很多?)用户现在直接从浏览器访问他们的电子邮件(webmail 就是这样一个平台),而不是运行单独的电子邮件软件。到目前为止,我测试过的所有此类平台都运行嵌入在电子邮件 html 中的任何 Javascript。但是,根据用户安全设置,某些此类环境不会自动获取外部链接(Javascript 或图片或其他),因此只能从作为邮件附件包含的文件中运行外部 Javascript。没有当前互联网连接的设备上的任何离线电子邮件阅读器也是如此。
以上内容适用于嵌入在电子邮件正文的主要消息部分中的 javascript。还可以将 html 作为“附件”明确给出,如果保存然后打开,将显示在 Web 浏览器中,其中 Javascript 很有可能可用。因此,可以将启用 javascript 的电子邮件的第二份副本作为 html 附件包含在正文/html 中的替代文本/纯正文和/或标记,将用户引导至附件。
我一直在考虑这个问题,因为我的一些熟人坚持要给我发送“电子邮件贺卡”,其中包含一条将我引导至一个链接的短信,我发现该链接非常不满意,以至于我什至拒绝考虑加载它只是原则上。我使用嵌入式 javascript 编写并发送了包含交互式图形和音乐甚至游戏的电子邮件贺卡,并对结果感到满意。
因此,我认为正确答案是“是”,因为协议专门针对脚本编写,而且我个人使用的所有电子邮件代理都在我的测试电子邮件中运行了 Javascript。
【讨论】:
您没有提供任何具体的客户端列表,您在其中成功测试了 JS 以及使用了哪些 JS 代码。我使用“原始 HTML”设置检查了 Thunderbird 52.4.0,它确实忽略了我的测试电子邮件中的 JS<script> document.write('test'); </script>
。适用于 android 2.2.44 的 Outlook、适用于 Android 5.208 的 K-9、Gmail 网络邮件程序(测试 06.11.2017)和 Roundcube 网络邮件程序 0.9.5 也是如此。所以我同意那些说它在大多数(现代)客户中不起作用的说法。确实,大多数用户都使用 webmailer,但有一个很好的理由,这些似乎在将消息传递给浏览器之前将 JS 从消息中剥离出来。
由于您指向 Thunderbird“文档”的链接根本不是文档,而是指一些用户提供的问题,因此我搜索了一些官方文档,发现:developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases/3 - 它在电子邮件中显示 JS在 Thunderbird 3 中掉落。【参考方案8】:
简答
没有
描述性答案
这取决于。但不保证电子邮件会按照您希望的方式运行。不同的电子邮件客户端处理 JS 的方式不同。大多数较新的电子邮件客户端都不支持其中任何一个,因为在包含大量个人信息的桌面应用程序中支持脚本执行可能非常危险。
我有一个用例,我需要在电子邮件中使用 JS。我也在 Outlook 和桌面客户端的 Web 客户端上进行了尝试,结果发现 Outlook 只是清除了 HTML 电子邮件的脚本部分。可能还有其他一些支持 JS 执行的电子邮件客户端,但鉴于您无法控制在客户端计算机中查看您的电子邮件的客户端,因此在 HTML 电子邮件中嵌入任何脚本并不是一个好主意。
建议您的 HTML 电子邮件尽可能简单,不要使用 JS,并且可以使用最少的 CSS(因为同样,不同的电子邮件客户端对 CSS 的支持也不同)例如:outlook 的 web 客户端甚至无法识别电子邮件中的 HTML 按钮标签。我不得不在其上使用锚标记和一些 CSS 来模拟按钮的显示。
底线 - 在处理 HTML 电子邮件时不要依赖 Javascript 内容。
【讨论】:
hotmail 和 gmail 和 protonmail 等基于 Web 的网络邮件怎么样?他们可以执行任何类型的 JS 还是他们有任何其他方式与您互动? (比如知道你什么时候打开一封带有签名的邮件,该签名是一个只为你托管的服务器以及当有人尝试访问时的记录?)(或其他我不知道的事情) 我没有在这些平台上测试过,但是 web 版本的 Outlook 阻止了我的所有 JS 代码。我想主要是为了限制发送者与接收者进行有害的交互。 @softyodayoann webmail 不允许电子邮件中的 JavaScript 没有技术原因,但这是一个巨大的安全风险,所以他们有一个很好的商业理由来禁止它。当然,在他们从原始电子邮件中删除任何 JS 后,他们可以重新添加自己的 JS 以跟踪您的交互。【参考方案9】:您可以在 Windows Live Mail 中查看带有 JavaScript 的电子邮件,但不能将 JavaScript 添加到您要发送的新电子邮件中。 JavaScript 也适用于保存的 .eml 文件。 Mozilla Thunderbird 60.7.0 版无法查看或添加 JavaScript。 (如果您使用 Thunderbird 保存 eml 文件,如果文件随后使用 Live Mail 加载,则代码将起作用) 您可以使用 php 代码发送带有 JavaScript 的电子邮件。 一些电子邮件网站可能支持它,但我使用的少数不支持。 (美国在线、uk2.net、GMail)
【讨论】:
【参考方案10】:出于安全考虑,没有电子邮件客户端支持 javascript
尝试发送包含此 HTML 内容的邮件
<!DOCTYPE html>
<html>
<body>
<button onclick="this.innerHTML=Date()">The time is?</button>
</body>
</html>
【讨论】:
以上是关于电子邮件中是不是支持 JavaScript?的主要内容,如果未能解决你的问题,请参考以下文章