2009-06-12 69 views
15

¿Hay alguna manera de hacer que el cliente de correo electrónico (Outlook) acepte caracteres especiales provenientes del enlace mailto en html? Estoy tratando de tener un enlace de mailto con caracteres alemanes en el cuerpo, pero en Outlook obtengo solo caracteres extraños.caracteres especiales de mailto

Gracias

+1

tengo el mismo problema . ¿Puedes elegir un aswer o publicar el tuyo? – AyexeM

Respuesta

0

Parece que necesitan la página que contiene el enlace de correo para estar en la codificación que está a la espera de Outlook. Sin saber más sobre la situación, trataría de codificar la página en UTF-8 e ISO-8859-1.

El "más sobre la situación" relevante sería qué caracteres extraños aparecen y cuál es la codificación de la página actualmente.

3

Creo que el uso de un método urlencode debe hacer lo que estás buscando. JavaScript tiene métodos .encodeURI() en objetos de cadena, y .NET tiene el método HttpUtility.UrlEncode.

¿Qué idioma estás usando?

+0

Estoy usando UrlEncode con Razor. ¿Tienes alguna idea sobre este @John? http://stackoverflow.com/questions/33097643/mailto-link-encoding-in-mvc-razor –

19

Acabo de pasar 2 días investigando este problema. Nuestro problema era que los enlaces mailto: en nuestras páginas web codificadas para utf-8 no funcionaban para los usuarios de Outlook si el asunto = cadena contenía caracteres no ascii, como por ejemplo, caracteres noruegos. Un ejemplo es: "mailto: [email protected]? Subject = julegløgg og fårikål"

Según lo que he aprendido hasta ahora, Outlook simplemente no maneja nada más que caracteres ASCII e iso-8859-1. Por lo tanto, al intentar hacer clic en el enlace mailto anterior (ya sea desde IE o Firefox), Outlook no puede decodificar los caracteres, dejando el tema roto y que contiene caracteres "extraños".

Así que el siguiente paso fue intentar recodificar las páginas en ISO-8859-1. Lo que hicimos fue reemplazar el enlace de correo original en la página UTF-8 con un enlace a un -servicio "email-to-iso", así:

http://url.com/service.php?service=util.mailtoencode&mailto=mail%40coretrek.no%3Fsubject%3Demne+%C3%B8%C3%A6%C3%A5+emne

Esta página sería convertir los caracteres mailto a iso-8859-1 y luego muestra todo el contenido de la página en iso-8859-1. Se utilizó un javascript en la página, que contenía "location.href = 'mailto: ...'" para abrir automáticamente el cliente de correo electrónico del cliente.

Hasta ahora todo parecía estar bien. Esto realmente funciona en Internet Explorer, tanto con Thunderbird como con Outlook (probado en IE7 en WinXP con Outlook express y TB 2).

PERO el problema ahora es en realidad Firefox. Parece que Firefox no puede decodificar urls codificadas en url que contienen caracteres que solo se encuentran en ISO-8859-1 pero no en ASCII (como el noruego å, representado por% E5 cuando está codificado). Lo mismo se maneja correctamente si la codificación de la página es utf-8, pero parece que los desarrolladores de Firefox han olvidado probar caracteres especiales junto con el juego de caracteres ISO-8859-1. El resultado es que Firefox pasa una cadena no descodificada (que todavía contiene% E5 en lugar de å) al cliente de correo electrónico. Y, sorprendentemente, esto es manejado correctamente por Outlook (que logra decodificar la cadena en sí), pero NO por Thunderbird, que probablemente tiene el mismo error que Firefox. Si no codifica el sujeto en URL, la cadena se pasa correctamente a Thunderbird, pero no a Outlook.

También hemos estado probando otros métodos de codificación, como php's htmlentities, htmlspecialchars, codificación base64, etc., pero todos fallan en un sentido u otro.

Así, resumió:

páginas codificadas en UTF-8:

IE falla siempre

FF -> Thunderbird: OK

FF -> Outlook: FALLO

Páginas codificadas en iso-8859-1:

IE: OK

FF -> Thunderbird: se produce un error si el sujeto está URL codificada, bien si no)

FF -> Outlook: se produce un error si el sujeto no está codificado en URL, bien si codificada) (esto es Windows, en Ubuntu Linux FF y TB funcionan bien siempre).

Esperando que esto haya sido útil para otros que tengan el mismo problema.

10

En PHP creo que la función que mejor funciona con Outlook es rawurlencode()

+0

Me acabo de dar cuenta de esto, después de probar todo tipo de otros métodos. +1 – yuttadhammo

+0

+1, hizo el trabajo por mí. – phemios

+0

Funciona como un encanto :-) –

2

Es necesario permitir soporte UTF-8 para el protocolo mailto:

Desde la ventana principal de Outlook, haga clic en Herramientas -> Opciones -> formato de correo -> opciones internacionales -> "Habilitar compatibilidad con UTF-8 para mailto: protocolo".

función
+1

Por desgracia, cuando está diseñando un sitio que puede necesitar caracteres especiales en mailto :, no tiene control sobre la configuración de las diversas personas que espera que hagan clic en el enlace. – ghoti

+0

@ghoti Still. Es una solución de trabajo. –

2

rawurlencode() funciona mejor con perspectiva, probado con Firefox, Chrome & IE

+0

Esta es la misma respuesta que la proporcionada por Mario Chueca en 2010. – jogojapan

+0

¡Funciona como un amuleto, gracias! :-) –

1

Como yandr indicó, este problema es un problema constante con Outlook.

Microsoft tiene published documentation que indica que Outlook 2003 y 2007 correctamente configurados, conectados a un servidor Exchange configurado correctamente, admitirán Unicode de manera predeterminada, pero eso realmente no lo ayudará con el público en general.

Como referencia, el "estándar" al que desea referirse es RFC 2047.

La solución que he implementado para evitar esta limitación (con el sueco, en realidad) es usar un formulario web en lugar de un enlace mailto :. Requiere más configuración en el lado del servidor, pero le da mucho más control sobre el proceso de contacto.

Estoy seguro de que esto no es lo que quería escuchar, pero hasta que el mundo deje de utilizar el software dañado de Microsoft, seguiremos necesitando soluciones como esta.

0

Si se utiliza SharePoint 2010, parece que Microsoft ha tenido conocimiento de este problema y ha proporcionado algunas funciones para solucionarlo.

A continuación se escapará adecuadamente el enlace a la página actual

escapeProperly (escapeProperlyCoreCore ($ (ubicación) .attr ('href'), falsa, falsa, verdadera))