mailto специальные символы - PullRequest
16 голосов
/ 12 июня 2009

Есть ли способ заставить почтовый клиент (Outlook) принимать специальные символы из ссылки mailto в html? Я пытаюсь получить ссылку mailto с немецкими символами в теле, но в Outlook я получаю только странные символы.

Спасибо

Ответы [ 9 ]

19 голосов
/ 02 декабря 2009

Я только что потратил 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 работает нормально всегда).

Надеясь, что это было полезно для других, имеющих такую ​​же проблему.

10 голосов
/ 11 мая 2010

В PHP я думаю, что функция, которая лучше всего работает с Outlook, это rawurlencode ()

3 голосов
/ 26 февраля 2010

На самом деле, решение http://blogs.msdn.com/ie/archive/2007/02/12/International-Mailto-URIs-in-IE7.aspx, и это не приятно.

Как правило, в IE 7 и 8 пользователь должен включить расширенные настройки в свойствах обозревателя, то, что 100% пользователей не будут знать, не будет включено.

3 голосов
/ 12 июня 2009

Я думаю, что использование метода urlencode должно делать то, что вы ищете. В JavaScript есть методы .encodeURI () для строковых объектов, а в .NET есть метод HttpUtility.UrlEncode .

Какой язык вы используете?

2 голосов
/ 11 ноября 2011

rawurlencode() функция лучше всего работает с Outlook, протестировано с Firefox, Chrome и IE

2 голосов
/ 31 января 2011

Вам необходимо включить поддержку UTF-8 для протокола mailto:

В главном окне Outlook выберите Сервис -> Параметры -> Формат почты -> Международные параметры -> «Включить поддержку UTF-8 для mailto: protocol».

1 голос
/ 08 декабря 2011

Как указал yandr, эта проблема является постоянной проблемой с Outlook.

Microsoft имеет опубликованную документацию , в которой говорится, что правильно настроенные Outlook 2003 и 2007, подключенные к правильно настроенному серверу Exchange, по умолчанию будут поддерживать Unicode, но на самом деле это не поможет вам в широкой общественности.

Для справки, "стандарт", на который вы хотите сослаться, это: RFC 2047 .

Решение, которое я реализовал, чтобы обойти это ограничение (на самом деле с шведским), заключается в использовании веб-формы вместо ссылки mailto :. Это требует больше настроек на стороне сервера, но дает вам гораздо больший контроль над процессом контакта.

Я уверен, что это не то, что вы хотели услышать, но пока мир не перестанет использовать неработающее программное обеспечение от Microsoft, нам по-прежнему будут нужны такие обходные пути.

0 голосов
/ 07 марта 2013

Если кто-то использует SharePoint 2010, похоже, что Microsoft знала об этой проблеме и предоставила некоторые функции для ее решения.

Следующее будет правильно экранировать ссылку на текущую страницу

escapeProperly (escapeProperlyCoreCore ($ (location) .attr ('href'), false, false, true))

0 голосов
/ 12 июня 2009

Похоже, вам нужна страница, содержащая ссылку mailto, в кодировке, которую ожидает Outlook. Не зная больше о ситуации, я бы попробовал кодировать страницу в UTF-8 и ISO-8859-1.

Соответствующее «больше о ситуации» было бы о том, какие странные символы появляются и какая кодировка страницы в настоящее время.

...