8

更新: 在这个问题之前两年,有人问了一个类似的问题:有效的最大邮件发送: Peter O指出的正文长度。幸运的是,这两个问题的答案是互补的 :-) 浏览器在过去两年里发展了很多,因此我们可以说这个问题是另一个问题的更新;-)


规范不限制mailto命令长度:

  1. RFC 6068规范
  2. HTML 4 规范(mailto命令是一个 URL)
    (请参阅这个 SO 答案这个 SO 问题的答案和这个问题的评论)

因此,mailto命令长度取决于 Internet 浏览器的实现。

我猜非常旧的浏览器无法很好地处理mailto使用超过 255 个字符的命令。

但是,如今,内存大小不再是mailto命令长度的问题。

mailto 最常见 的互联网浏览器最大长度是多少?

看看浏览器是否收敛到相同的mailto长度限制应该很有趣。

4

5 回答 5

9

Safari 和大多数电子邮件客户端没有硬限制(取决于可用的 CPU 和 RAM)

2015 年网络浏览器测试:

  • 苹果浏览器
    • 705000000
    • 2分钟
    • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.1.56 (KHTML, like Gecko) 版本/9.0 Safari/601.1.56
    • 受限于 16GB RAM
  • 火狐
    • 268435455
    • 20 秒
    • Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0
    • 受最大字符串长度限制
  • 铬合金
    • 2097132
    • 1秒
    • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
    • 限定不解释
  • IE
    • 2029
    • 5秒
    • Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) 像 Gecko
    • 限定不解释

2015 年电子邮件客户端测试:

  • Mozilla 雷鸟
    • 2097132 1秒内工作
    • 268435455 使用 100% CPU 2 分钟但未能渲染 body 且不可用
    • 版本 38.3.0
  • 海猴子
    • 2097132 在 5 秒内工作
    • 268435455 长时间使用 100% CPU(超过 5 分钟)
    • 2.38 版
  • 苹果邮件
    • 500000 次在 14 秒内工作
    • 2097132 长时间使用 100% CPU(超过 5 分钟)
    • 8.2版
  • 微软展望
    • 在 1 秒内修剪到 2070
    • 2013 版

2017 年更新

Chrome 61 在 macOS(16 GB RAM)上仍然可以使用 2097132 长度;

navigator.userAgent;
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
location.href='mailto:?body='+'a'.repeat(2097132);

根据 Windows(32 GB RAM)上的@Chloe,它限制为 1800;

"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
于 2015-10-09T14:58:24.210 回答
3

仅供参考,我发现谷歌浏览器的最新版本(23.0.1271.95)只允许我生成一个最大长度为:

1910 个字符

于 2012-12-12T12:22:27.423 回答
2

除了系统的可用内存之外,Firefox 不会对 URL 的长度施加任何限制,因此您必须在调用进程时查看操作系统对参数最大长度的限制。

此外,您可以将 Web 应用程序设置为 mailto URI 方案处理程序,在这种情况下,限制取决于接受请求的服务器。Firefox 带有一些选项,例如 Gmail 和 Yahoo! 邮件,您可以使用navigator.registerProtocolHandler注册自己的处理程序。如果您好奇,请打开 about:config 并过滤“gecko.handlerService.schemes”以查看您在浏览器中配置的 Web 应用程序处理程序。

我不能说其他浏览器,但是一旦你开始依赖这么多不同的变量(浏览器、可用内存、操作系统、服务器),最好尝试不同的策略。

于 2012-11-20T04:26:25.923 回答
1

不幸的是,浏览器和各种客户端非常松散地遵守 RFC 文档,但要回答你的问题,你可以看看这个答案

于 2012-11-26T09:23:07.940 回答
1

如果我使用 JavaScript 函数来构建 mailto URL(带有动态标题和正文)然后调用 window.open(url) 来启动默认的电子邮件客户端,这个 URL 的最大长度似乎要短得多。如果 URL 太长,将不会激活电子邮件客户端。

这是仅适用于在 Windows 上运行的浏览器的最大长度。

  • Chrome 64.0.3282.186 上的 2042 个字符
  • Edge 16.16299 上的 2046 个字符
  • Firefox 58.0 上大约 32700 个字符
于 2018-03-16T00:28:02.313 回答