Hotmail не может правильно читать почту с помощью! в URL

У меня есть одностраничное приложение с такими URL http://example.com/#!something/something/, Проблема в том, что когда я отправляю электронное письмо, содержащее ссылку на такой URL-адрес, пользователи hotmail получают их неправильно (я заметил это только в hotmail, все остальные хороши).

! закодирован в %21 что делает URL неверным: http://example.com/#%21something/something/

Любые идеи, что можно сделать, кроме переписывания моего приложения:-). Я использую http://swiftmailer.org/ для отправки электронной почты, но я очень сомневаюсь, что это актуально.

1 ответ

Согласно RFC3986, "!" символ действителен во фрагменте (#...) компонент URI, поэтому он не должен кодироваться с использованием процентного кодирования. В этом смысле это похоже на ошибку outlook.com.

Одним из обходных путей является использование текстовых писем: на основе моих тестов outlook.com кодирует !Только HTML-ссылки электронной почты и обычные текстовые сообщения безопасны.

Реальное решение, однако, состоит в том, чтобы сделать вашу собственную нормализацию в коде на стороне клиента. Взлом и нормализация URL-адресов - действительно сложная задача, поэтому я ожидаю также проблем с другими почтовыми клиентами. Запуск JavaScript decodeUriComponent() против window.location.hash должен дать вам незашифрованный "#!/something/something" версия независимо от того, был ли восклицательный знак закодирован или нет. Я понимаю, что это требует изменения веб-приложения, которого вы хотели избежать, но, насколько мне известно, это путь.

Другие вопросы по тегам