有效最大mailto:体长

时间:2010-12-17 19:10:29

标签: cross-browser compatibility mailto email-client multiple-browsers

mailto:链接的& body部分中的文本有最大长度。根据我的一位同事的说法,W3C将限制发布为256(尽管如此,我没有提供支持的链接)。

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

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

邮件客户:

  • Outlook(2003,2007,2010)
  • Eudora(7.1,和/或最新版本)
  • Thunderbird(最新版本)

浏览器:

  • Firefox(3 +)
  • IE(6,7,8)
  • iPhone浏览器

感谢您收到的任何和所有号码。

3 个答案:

答案 0 :(得分:27)

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

Microsoft产品确实设置了限制:

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

支持数据网址的现代浏览器(IE< 9以外的所有内容)应该没问题。

答案 1 :(得分:11)

对于使用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个字符都会成为新电子邮件的主体。

Some say it's mainly OS-setting-dependent但至少在Windows上,我找不到任何与mailto相关的注册表项,其数字接近2,000。

答案 2 :(得分: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加1,它将停止工作。