Mailto специальные символы
Есть ли способ заставить почтовый клиент (Outlook) принимать специальные символы, исходящие из ссылки mailto в html? Я пытаюсь иметь ссылку mailto с немецкими символами в теле, но в Outlook я получаю только странные символы.
Спасибо
Ответы
Ответ 1
Я только что потратил 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", например:
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-кодированные 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 работает нормально всегда).
Надеясь, что это было полезно для других, имеющих ту же проблему.
Ответ 2
В PHP я думаю, что функция, которая лучше всего работает с Outlook, - rawurlencode()
Ответ 3
Я думаю, что использование метода urlencode должно делать то, что вы ищете. JavaScript имеет методы .encodeURI() для строковых объектов, а .NET имеет метод HttpUtility.UrlEncode.
Какой язык вы используете?
Ответ 4
На самом деле, решение http://blogs.msdn.com/ie/archive/2007/02/12/International-Mailto-URIs-in-IE7.aspx, и это не приятно.
В принципе, в IE 7 и 8 пользователь должен включить расширенные настройки в настройках Интернета, что 100% пользователей не узнает, не будет включено.
Ответ 5
Вам нужно включить поддержку UTF-8 для протокола mailto: protocol
В главном окне Outlook выберите "Сервис" → "Параметры" → "Формат почты" → "Международные параметры" → "Включить поддержку UTF-8 для протокола mailto: protocol".
Ответ 6
rawurlencode()
функция работает лучше всего с перспективой,
протестирован с Firefox, Chrome и IE
Ответ 7
Как указал yandr, эта проблема является постоянной проблемой Outlook.
Microsoft опубликовала опубликованную документацию, в которой говорится, что правильно настроенные Outlook 2003 и 2007, подключенные к правильно настроенному серверу Exchange, будут по умолчанию поддерживать Unicode, но это на самом деле не помогает вам с широкой публикой.
Для справки, "стандартный", к которому вы хотите обратиться, RFC 2047.
Решение, которое я реализовал, чтобы обойти это ограничение (на самом деле, на шведском языке), заключается в использовании веб-формы вместо ссылки mailto:. Это требует большей настройки на стороне сервера, но дает вам намного больше контроля над процессом контакта.
Я уверен, что это не то, что вы хотели услышать, но пока мир не перестанет использовать сломанное программное обеспечение от Microsoft, мы продолжим использовать обходные пути, подобные этому.
Ответ 8
Похоже, вам нужна страница, содержащая ссылку mailto, в кодировке, ожидаемой Outlook. Не зная о ситуации, я бы попробовал кодировать страницу в UTF-8 и ISO-8859-1.
Соответствующим "больше о ситуации" будут то, что появляются странные символы и какова кодировка страницы.
Ответ 9
Если вы используете SharePoint 2010, кажется, Microsoft знает об этой проблеме и предоставила некоторые функции для решения этой проблемы.
Следующее будет правильно удалять ссылку на текущую страницу
escapeProperly (escapeProperlyCoreCore ($ (location).attr('href'), false, false, true))