Я только что потратил 2 дня на изучение этой проблемы. Наша проблема заключалась в том, что mailto: ссылки на наших веб-страницах с кодировкой utf-8 не работали для пользователей Outlook, если в строке subject = не символы ascii, например, норвежские символы. Примером является:
"mailto: mail@coretrek.no? subject = julegløgg og fårikål"
Из того, что я узнал до сих пор, Outlook просто не обрабатывает ничего, кроме символов ASCII и iso-8859-1. Таким образом, при попытке нажать на ссылку выше mailto (из IE или Firefox), Outlook не удается декодировать символы, оставляя тему неработающей и содержащей «странные» символы.
Итак, следующим шагом была попытка перекодировать страницы в ISO-8859-1. Мы заменили исходную ссылку mailto на странице utf-8 ссылкой на сервис «email-to-iso», например:
http://url.com/service.php?service=util.mailtoencode&mailto=mail%40coretrek.no%3Fsubject%3Demne+%C3%B8%C3%A6%C3%A5+emne
Эта страница преобразует символы mailto в iso-8859-1, а затем выводит все содержимое страницы в iso-8859-1. Javascript на странице, содержащий "location.href = 'mailto: ...'", использовался для автоматического открытия почтового клиента клиента.
Пока все вроде нормально. Это на самом деле работает в Internet Explorer, как с Thunderbird, так и с Outlook (протестировано на IE7 на WinXP с Outlook Express и TB 2).
НО проблема сейчас на самом деле в Firefox. Похоже, что Firefox не может декодировать URL-адреса в кодировке, содержащие символы, найденные только в ISO-8859-1, но не в ASCII (как норвежский å, представленный% E5 при кодировании). То же самое обрабатывается корректно, если кодировка страницы - utf-8, но кажется, что разработчики Firefox забыли тестировать специальные символы вместе с кодировкой ISO-8859-1.
В результате Firefox передает не декодированную строку (все еще содержащую% E5 вместо å) почтовому клиенту. И, что удивительно, это корректно обрабатывается Outlook (который умеет декодировать саму строку), но НЕ Thunderbird, который, вероятно, имеет ту же ошибку, что и Firefox. Если вы НЕ URL-адресом кодируете тему, строка передается в Thunderbird правильно, но не в Outlook.
Мы также пробовали другие методы кодирования, такие как htmlentities в php, htmlspecialchars, кодирование base64 и т. Д., Но все они так или иначе дают сбой.
Итак, подведем итог:
Страницы, закодированные в utf-8:
IE всегда выходит из строя
FF -> Thunderbird: OK
FF -> Outlook: FAIL
Страницы, закодированные в iso-8859-1:
IE: OK
FF -> Thunderbird: выдает ошибку, если объект закодирован в URL, хорошо, если нет)
FF -> Outlook: выдает ошибку, если тема не закодирована по URL, хорошо, если закодирована)
(это Windows, на Ubuntu Linux FF и TB работает нормально всегда).
Надеясь, что это было полезно для других, имеющих такую же проблему.