在电子邮件消息中是否支持JavaScript ?


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


对于大多数邮件客户端来说,没有。


在电子邮件中不支持Javascript。


它可能是,但邮件客户端不会读取它,邮件服务器可能会拒绝它。所以把它放一边。


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


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

以前的客户端,如Lotus Notes、Mozilla Thunderbird、Outlook Express和Windows Live Mail似乎都支持某种JavaScript执行。其他的都不行。

从安全角度来看,这似乎是一个坏主意,所以我希望这个功能不会一直存在,即使是在这些客户机中。


其他回答的人认为答案是“不”。

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

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

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

协议(特别是RFC2854)显式地解决脚本(在text/html消息体类型中),声明如下:

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

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

My (ancient) email reader uses a table to specify which viewer software to use for each mimetype, diverting html content to my favorite web browser. Almost all current web browsers support Javascript (and some issue dire warnings when you try to turn it off!) Do modern email agents include internal html interpreters and, if so, is the javascript turned on or off? I've checked documentation on Thunderbird and find that javascript seems to be turned on by default but can be turned off: http://codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160

I have noticed that some (?many?) users now access their email from a browser directly (webmail is one such platform) rather than running separate email software. All such platforms which I have tested so far do run any Javascript embedded in the html of the email message. However some such environments, depending on user security settings, do not automatically fetch external links (Javascript or pictures or other) and so can only run external Javascript from a file which is included as an attachment to the message. The same would be true of any offline email reader on a device without a current internet connection.

上述内容适用于嵌入在电子邮件主体的主消息部分的javascript。还可以将html显式地作为“附件”提供,如果保存并打开它,则会在web浏览器中显示,其中Javascript非常有可能可用。因此,可以将启用javascript的电子邮件的第二份副本作为html附件,并在主文本/html中添加替代文本/纯正文和/或标记,引导用户访问附件。

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

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


简短的回答

No


描述性的回答

视情况而定。但是电子邮件并不能保证按照你想要的方式运行。不同的电子邮件客户端处理JS的方式不同。大多数新的电子邮件客户端都不支持这些,因为在包含大量个人信息的桌面应用程序中支持脚本执行是非常危险的。

我有一个用例,我需要在电子邮件中使用JS。我也在outlook的网页客户端和桌面客户端上进行了测试,结果发现outlook会删除HTML电子邮件中的脚本部分。可能有其他一些支持JS执行的电子邮件客户端,但考虑到您无法控制客户端,在客户端机器中查看您的电子邮件,在HTML电子邮件中嵌入任何脚本不是一个好主意。

建议让你的HTML电子邮件尽可能简单,没有JS,和最少的CSS(因为,再次强调,不同的电子邮件客户端也有不同的CSS支持),例如:outlook的web客户端甚至不能识别电子邮件中的HTML按钮标签。我必须使用一个锚标记和一些CSS在它上面来模拟按钮的显示。


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


您可以使用JavaScript在Windows Live Mail中查看电子邮件,但不能将JavaScript添加到您希望发送的新电子邮件中。 JavaScript也适用于保存的.eml文件。 Mozilla Thunderbird版本60.7.0无法查看或添加JavaScript。 (如果你保存一个eml文件与雷鸟,代码将工作,如果文件然后加载Live邮件) 你可以使用PHP代码用JavaScript发送电子邮件。 一些电子邮件网站可能支持它,但我用过的几个网站不支持。(美国在线,uk2.net, GMail)


出于安全考虑,电子邮件客户端不支持javascript

尝试发送带有此HTML内容的邮件

     <!DOCTYPE html>
     <html>
     <body>
     <button onclick="this.innerHTML=Date()">The time is?</button>
     </body>
     </html>

简短的回答:不,在电子邮件消息中不支持

长一点的回答: 我用两个电子邮件阅读器对它进行了测试。Outlook(在线)和OE Classic。由于OE Classic非常过时(我在windows 7上使用它),它确实支持JavaScript,我用警报按钮测试了它。不过,新版Outlook甚至不支持按钮,只能以纯文本的形式显示。因此,JavaScript只在一些较老的电子邮件阅读器上启用,而在Outlook等新阅读器上则不启用。