2009-06-12 1 views
15

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

Благодаря

+1

У меня такая же проблема , Можете ли вы выбрать awer или опубликовать свой собственный? – AyexeM

ответ

0

Это звучит, как вам нужно страницу, содержащую ссылку MailTo быть в кодировке, прогноз ожидает. Не зная о ситуации, я бы попробовал кодировать страницу в UTF-8 и ISO-8859-1.

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

3

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

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

+0

Я использую UrlEncode с Razor. У тебя есть идея об этом @ Джон? http://stackoverflow.com/questions/33097643/mailto-link-encoding-in-mvc-razor –

19

Я только что провел 2 дня расследования этой проблемы. Наша проблема заключалась в том, что mailto: ссылки на наши веб-страницы, закодированные utf-8, не работали для пользователей Outlook, если строка subject = содержала символы не-ascii, например, норвежские символы. Примером может служить: :

Из того, что я узнал до сих пор, Outlook просто не ничего, кроме ASCII и ISO-8859-1 символов обрабатывать «MAILTO [email protected] Subject = julegløgg ог форикол?». Поэтому, пытаясь щелкнуть по указанной выше ссылке mailto (либо из IE, либо из Firefox), Outlook не сможет декодировать символы, оставив объект сломанным и содержащий «странные» символы.

Итак, следующим шагом было попытаться перекодировать страницы в ISO-8859-1. То, что мы сделали, чтобы заменить оригинальный MailTo ссылку на страницу в кодировке UTF-8 со ссылкой на «электронной почте и по 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 intestead of å) клиенту электронной почты. И, что удивительно, это правильно обрабатывается Outlook (которому удается декодировать собственно строку), но НЕ от Thunderbird, который, вероятно, имеет ту же ошибку, что и Firefox. Если вы НЕ ЗАКАЗЫВАЕТ кодировку объекта, строка передается правильно 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

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

+0

Я просто подумал об этом, пробовав всевозможные другие методы. +1 – yuttadhammo

+0

+1, сделал эту работу для меня. – phemios

+0

Работает как шарм :-) –

2

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

В главном окне Outlook, выберите Инструменты -> Параметры -> формат почты -> международные параметры -> "Включить поддержку UTF-8 для mailto: protocol".

+1

Увы, когда вы разрабатываете сайт, для которого могут понадобиться специальные символы в mailto :, у вас нет контроля над настройкой различных людей, которые, как вы надеетесь, нажмут на ссылку. – ghoti

+0

@ghoti Still. Это рабочее решение. –

2

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

+0

Это тот же ответ, что и Марио Чуэка в 2010 году. – jogojapan

+0

Работает как шарм, спасибо! :-) –

1

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

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

Для справки, «стандарт», к которому вы хотите обратиться, - RFC 2047.

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

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

0

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

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

escapeProperly (escapeProperlyCoreCore ($ (место нахождения) .attr ('HREF'), ложь, ложь, правда))

 Смежные вопросы

  • Нет связанных вопросов^_^