【问题标题】:Hotmail can not properly read email with ! in urlHotmail 无法正常阅读邮件!在网址中
【发布时间】:2014-11-10 23:30:36
【问题描述】:
我有一个单页应用程序,其 URL 类似于 http://example.com/#!something/something/。问题是当我发送包含指向此类 url 链接的电子邮件时,hotmail 用户会误会他们(我只在 hotmail 中注意到它,其他人都很好)。
! 被编码为 %21,这使得 url 错误:http://example.com/#%21something/something/
除了重写我的应用程序之外可以做什么的任何想法 :-)。我正在使用swiftmailer 发送电子邮件,但我非常怀疑这是否相关。
【问题讨论】:
标签:
email
url
hotmail
hashbang
【解决方案1】:
根据 RFC3986,"!" 字符在 URI 的片段 (#...) 组件中有效,因此不应使用百分比编码对其进行编码。从这个意义上说,这似乎是一个 Outlook.com 错误。
一种解决方法是使用纯文本电子邮件:根据我的测试,outlook.com 仅对! 的 HTML 电子邮件链接进行编码,并且纯文本电子邮件是安全的。
然而,真正的解决方案是在客户端代码中进行自己的规范化。 URL 破解和规范化是一项非常棘手的业务,因此我预计其他电子邮件客户端也会出现问题。对 window.location.hash 运行 JavaScript decodeUriComponent() 应该会为您提供未编码的 "#!/something/something" 版本,无论感叹号是否已编码。我了解这需要修改您想要避免的 Web 应用程序,但据我所知,这是要走的路。