Hotmail无法使用正确读取电子邮件!在url中



我有一个单页应用程序,它有类似http://example.com/#!something/something/的URL。问题是,当我发送包含此类url链接的电子邮件时,hotmail用户会弄错(我只在hotmail中注意到了这一点,其他人都很好)。

!编码为%21,导致url错误:http://example.com/#%21something/something/

除了重写我的应用程序之外,还有什么可以做的想法:-)。我正在使用swiftmailer发送电子邮件,但我非常怀疑这是否相关。

根据RFC3986,"!"字符在URI的片段(#...)组件中是有效的,因此不应使用百分比编码对其进行编码。从这个意义上说,这似乎是outlook.com的一个bug。

一个解决方法是使用纯文本电子邮件:根据我的测试,outlook.com只对!的HTML电子邮件链接进行编码,纯文本电子邮件是安全的。

然而,真正的解决方案是在客户端代码中进行自己的规范化。URL破解和规范化是一项非常棘手的业务,所以我预计其他电子邮件客户端也会出现问题。对window.location.hash运行JavaScript decodeUriComponent(),无论感叹号是否编码,都会得到未编码的"#!/something/something"版本。我知道这需要修改您想要避免的web应用程序,但据我所知,这是一条可行的道路。

相关内容

  • 没有找到相关文章

最新更新