我有一个通过 mailto 提交到电子邮件服务器的表单。
如您所知,mailto 内容存在限制,超过该限制则无法正常工作,因为它超出了 URL 字符数限制。
我开发了一些特定于域的自定义数据压缩,但它仍然不够(如果所有字段都被填满,它将突破限制,这种情况很少见......但很少见对客户端来说已经足够糟糕了。永远不会)更好。)。
我发现了 Lempel–Ziv–Welch 算法 ( http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch ) 并得出结论,它可以让我节省 40% 的平均长度。
不幸的是,我当然需要调用encodeURIComponent将其发送到mailto,并且由于LSW algorightm将返回许多URL不支持的字符,这实际上会使URL编码后变得更糟。
在您告诉我使用服务器端语言向服务器发帖会更容易之前,让我告诉您这是一种非常独特的情况,其中表单必须通过客户端应用程序通过电子邮件提交,因为电子邮件是最终用户与外界联系的唯一方式...
那么,您知道有什么方法可以有效地压缩数据而不用encodeURIComponent破坏这一切吗?
或者有没有一种方法可以将内容发送到mailto而不通过浏览器?
我见过一些使用 ActiveX 等打开 Outlook 的方法,但这是特定于浏览器/电子邮件客户端的。
我还检查了使用 javascript 将表单信息保存在文件中的选项...但是应用程序用户,好吧,我们只能说他们根本不是专家,而且据我所知,他们可能会失败附加电子邮件。 (是的,他们就是那么糟糕)
因此,我寻找最简单的选项,其中用户参与几乎为 0,结果是发送一封包含表单数据的电子邮件,所有这些都没有服务器端语言,并使用压缩算法(如果适用)。
非常感谢您的帮助!
最佳答案
您将很难做到“从不”压缩,因为压缩器总是会扩展而不是压缩字符串。 (压缩的基本数学属性。)
话虽如此,有比 LZW 更好的压缩器,具体取决于输入的长度。你应该尝试zlib和 lzma 。然后,需要仅使用允许的 URL 字符对这些二进制输出进行编码。
关于javascript - 在不达到 URL 限制的情况下将 ascii 字符发送到 mailto 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784888/