Есть ли способ заставить почтовый клиент (Outlook) принимать специальные символы, исходящие из ссылки mailto в html? Я пытаюсь иметь ссылку mailto с немецкими символами в теле, но в Outlook я получаю только странные символы.
Спасибо
Есть ли способ заставить почтовый клиент (Outlook) принимать специальные символы, исходящие из ссылки mailto в html? Я пытаюсь иметь ссылку mailto с немецкими символами в теле, но в Outlook я получаю только странные символы.
Спасибо
Я только что потратил 2 дня на расследование этой проблемы. Наша проблема заключалась в том, что mailto: ссылки на наши веб-страницы, закодированные utf-8, не работали для пользователей Outlook, если строка subject = содержала символы не-ascii, например, норвежские символы. Пример: "mailto: [email protected]? 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", например:
Эта страница преобразует символы mailto в iso-8859-1, а затем выводит содержимое всей страницы в iso-8859-1. Javascript на странице, содержащий "location.href= 'mailto:...", был использован для автоматического открытия клиентского почтового клиента.
До сих пор все казалось ок. Это действительно работает в Internet Explorer, как с Thunderbird, так и с Outlook (тестируется в IE7 на WinXP с Outlook Express и TB 2).
НО проблема теперь - это Firefox. Похоже, что Firefox не может декодировать url-кодированные URL-адреса, содержащие символы, найденные только в ISO-8859-1, но не в ASCII (например, норвежский å, представленный% E5 при кодировании). Тот же å обрабатывается правильно, если кодировка страницы - utf-8, но, похоже, разработчики Firefox забыли проверить специальные символы вместе с кодировкой ISO-8859-1. В результате Firefox передает не-декодированную строку (все еще содержащую% E5 intstead of å) клиенту электронной почты. И, что удивительно, это правильно обрабатывается Outlook (которому удается декодировать собственно строку), но НЕ от Thunderbird, который, вероятно, имеет ту же ошибку, что и Firefox. Если вы НЕ ЗАКАЗЫВАЕТ кодировку объекта, строка передается правильно Thunderbird, но не Outlook.
Мы также пытались использовать другие методы кодирования, такие как php htmlentities, htmlspecialchars, кодировка base64 и т.д., но все они терпят неудачу так или иначе.
Итак, вкратце:
Страницы, закодированные в utf-8:
IE всегда не работает
FF → Thunderbird: OK
FF → Outlook: FAIL
Страницы, закодированные в iso-8859-1:
IE: ОК
FF → Thunderbird: сбой, если объект закодирован в url, нормально, если нет)
FF → Outlook: сбой, если объект не закодирован в url, ok, если он закодирован) (это Windows, на Ubuntu Linux FF и TB работает нормально всегда).
Надеясь, что это было полезно для других, имеющих ту же проблему.
В PHP я думаю, что функция, которая лучше всего работает с Outlook, - rawurlencode()
Я думаю, что использование метода urlencode должно делать то, что вы ищете. JavaScript имеет методы .encodeURI() для строковых объектов, а .NET имеет метод HttpUtility.UrlEncode.
Какой язык вы используете?
На самом деле, решение http://blogs.msdn.com/ie/archive/2007/02/12/International-Mailto-URIs-in-IE7.aspx, и это не приятно.
В принципе, в IE 7 и 8 пользователь должен включить расширенные настройки в настройках Интернета, что 100% пользователей не узнает, не будет включено.
Вам нужно включить поддержку UTF-8 для протокола mailto: protocol
В главном окне Outlook выберите "Сервис" → "Параметры" → "Формат почты" → "Международные параметры" → "Включить поддержку UTF-8 для протокола mailto: protocol".
rawurlencode()
функция работает лучше всего с перспективой,
протестирован с Firefox, Chrome и IE
Как указал yandr, эта проблема является постоянной проблемой Outlook.
Microsoft опубликовала опубликованную документацию, в которой говорится, что правильно настроенные Outlook 2003 и 2007, подключенные к правильно настроенному серверу Exchange, будут по умолчанию поддерживать Unicode, но это на самом деле не помогает вам с широкой публикой.
Для справки, "стандартный", к которому вы хотите обратиться, RFC 2047.
Решение, которое я реализовал, чтобы обойти это ограничение (на самом деле, на шведском языке), заключается в использовании веб-формы вместо ссылки mailto:. Это требует большей настройки на стороне сервера, но дает вам намного больше контроля над процессом контакта.
Я уверен, что это не то, что вы хотели услышать, но пока мир не перестанет использовать сломанное программное обеспечение от Microsoft, мы продолжим использовать обходные пути, подобные этому.
Похоже, вам нужна страница, содержащая ссылку mailto, в кодировке, ожидаемой Outlook. Не зная о ситуации, я бы попробовал кодировать страницу в UTF-8 и ISO-8859-1.
Соответствующим "больше о ситуации" будут то, что появляются странные символы и какова кодировка страницы.
Если вы используете SharePoint 2010, кажется, Microsoft знает об этой проблеме и предоставила некоторые функции для решения этой проблемы.
Следующее будет правильно удалять ссылку на текущую страницу
escapeProperly (escapeProperlyCoreCore ($ (location).attr('href'), false, false, true))