46

mailto: 链接的 &body 部分中的文本有一个最大长度。根据我的一位同事的说法,W3C 将限制发布为 256(不过我没有链接来支持它)。

我们在电子邮件和网页中都嵌入了 mailto: 链接,并且已成功使用超过 256 个字符。但是,在某个时间点之后,电子邮件客户端和浏览器开始崩溃并拒绝打开链接。

我想知道以下允许的实际最大长度:

邮件客户端:

  • 展望(2003、2007、2010)
  • Eudora(7.1,和/或任何最新版本)
  • 雷鸟(最新版本)

浏览器:

  • 火狐 (3+)
  • 即(6、7、8)
  • iPhone 浏览器

我们将不胜感激地收到您可以提供的任何和所有号码。

4

4 回答 4

32

该标准没有定义最大长度,将实现留给浏览器和邮件客户端(参见 IETF RFC 2368)。

Microsoft 产品确实有设置限制:

其他浏览器可能会超出合理的电子邮件正文的长度。iPhone 没有记录的限制,但可以处理最多 1MB 的文本。

支持数据 url 的现代浏览器(除了 IE<9 之外的所有浏览器)应该没问题。

于 2011-07-07T00:23:03.667 回答
15

对于带有 JS 控制台的浏览器,一个简单的测试:

for (var i=2014; i>1600; i--) {var good=1; try {location.href='mailto:?body='+'a'.repeat(i)} catch (e) {good=0;} if (good==1) {console.log(i+13);break;}}

(13 代表 的长度mailto:?body=。)

在 Firefox 32.0.3 上,这会产生 2008(主体长度 1995)。在 Thunderbird 31.2.0 上,所有 1,995 个字符都进入了新电子邮件的正文。

有人说这主要取决于操作系统设置,但至少在 Windows 上,我找不到任何与mailto接近 2,000 的数字相关的注册表项。

于 2014-10-20T19:30:07.203 回答
1

我刚刚做了一个从 Wolfram Mathematica 到 Microsoft Outlook 的实验。它适用于 31888 或更短的字符串长度。这是我用于此实验的代码:

Table[ToString@RandomInteger[{0, 9}], 31433] //
     Partition[#, UpTo[80]] & //
    Map[StringJoin] //
   StringRiffle[#, "\n"] & //
  "mailto:xxxxxxx.xxxxxxx@xx.com?subject=Testing out mailto!&body="<> # & //
 Echo[#, "Total String Length", StringLength] & //
SystemOpen

并打印 31888 作为总字符串长度。如果将 31433 加一,它将停止工作。

于 2020-03-10T13:48:20.127 回答
0

截至 2022 年,outlook(无论如何是 2007 年)似乎在 Firefox 中使用 mailto 接受至少 8000 个字符的长查询字符串。然而,使用谷歌 Chrome 浏览器,Chrome 在 2000 年左右就失败了。最小的公分母似乎是 Chrome。太糟糕了,因为这是十多年来的要求。

于 2022-01-01T22:58:09.433 回答