2009-10-27 157 views
4

我有链接生成的web应用程序。我想让用户可以通过电子邮件将他们创建的链接通过Gmail,雅虎邮件等方式发送给他人。雅虎邮件有一个特别的问题,我需要一个解决方法。在雅虎邮件编码链接的URI编码

如果你有一个雅虎邮件帐户,请点击此链接:

http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%23anchor

注意,雅虎重定向到一个指定的邮件服务器(例如http://us.mc431.mail.yahoo.com/mc/compose)。像它一样,它解码十六进制代码。其中之一,%23,是一个散列符号,在查询字符串参数值中不合法。 %23之后的所有信息都已丢失。

我所有的链接都坏了,只是使用另一个字符不是一个选项。

调用us.mc431.yahoo.com直接为我工作,但可能不适合所有用户,具体取决于他们的位置。

我试过设置html = true | false,把网址放在html标记中。什么都没有任何人都有可靠的解决方法来解决这个特别的问题吗?

注意:任何基于服务器的解决方法对我来说都是不起作用的。这必须是雅虎和最终用户之间的链接。

感谢

回答

1

我认为你是在什么样雅虎的服务器做时,它会发出HTTP重定向摆布。它似乎是应该保留重定向URL转义,但不是。但是,如果不知道其基础应用程序,很难说为什么它不会。也许,这只是一个意想不到的副作用(或错误),或者该页面上的某些Javascript功能要求他们使用哈希标记进行一些讨论。

3

过去几个小时我一直在处理同样的问题,我找到了解决方法!

如果您对锚点进行双重编码,它将被Yahoo正确解释。这意味着将%23更改为%2523(百分号是%25编码)。

所以你的URI将是:
http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%2523anchor

相同的解决方法可用于符号。如果您只将其编码为%26,那么Yahoo会将其转换为“& amp;”这将丢弃其余的消息。与上述步骤相同 - 将%26更改为%2526。

尽管(%0D和%0A)我仍然没有找到解决新行问题的方法。

+1

%25和%23的组合为我工作:'http://example.com?foo =%25&bar = http:// example.com /%23/baz' – 2014-09-23 02:29:44

3

对于新行,添加换行符为< BR>和双编码也行,它成功地解释为新的生产线在新邮件

+1

这不再起作用。 – 2014-01-22 21:00:33

4

这是我如何做到这一点:

  1. 运行这些字符一个window.escape& ' " # > < \

  2. 上满弦运行一个encodeURIComponent

它适用于我的大部分情况。尽管换行符(\n)仍然是一个问题,但是我用空格替换了\ n,并且它工作正常。