4

我有链接生成网络应用程序。我想让用户使用 gmail、yahoo 邮件等轻松地将他们创建的链接通过电子邮件发送给其他人。雅虎邮件有一个特殊的怪癖,我需要一个解决方法。

如果您有雅虎邮箱帐户,请点击此链接:

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,将 URL 放在 html 标记中。没有任何效果。有人对这个特殊的怪癖有可靠的解决方法吗?

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

谢谢

4

4 回答 4

4

这是我的做法:

  1. window.escape在这些字符上 运行 a :& ' " # > < \

  2. encodeURIComponent在整个字符串上运行 a

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

于 2012-12-06T00:56:05.377 回答
3

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

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

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

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

我仍然没有找到换行问题的解决方案(%0D 和 %0A)。

于 2010-12-01T11:32:24.403 回答
3

对于换行符,将换行符添加为 <BR>对其进行双重编码,它在新消息中被成功解释为换行符

于 2011-07-03T12:34:41.620 回答
1

我认为您在发布 HTTP 重定向时受雅虎服务器的支配。似乎它应该保留在重定向上转义的 URL,但不是。但是,如果不了解它们的底层应用程序,很难说为什么它不会。也许,这只是一个意外的副作用(或错误),或者该页面上的某些 Javascript 功能要求他们对哈希标签进行一些处理。

于 2009-10-27T18:26:44.623 回答