2011-06-21 17 views
5

Estoy usando mailto para permitir el envío de información de presupuesto del producto por parte de los clientes. Estoy intentando rellenar automáticamente la cita en el cuerpo del correo electrónico mediante la construcción del enlace de correo como una cadena, y la concatenación de la información de la cotización, según el siguiente código:El texto del cuerpo de Mailto no rellena IE

var quoteinfo = 'quote information here'; 
var link = '<a href="mailto:email?subject=subject&body=Please enter your contact information 
and message here: %0A%0A%0AQuote:%0A' + quoteinfo + '">email</a>'; 

Sin embargo, al usar el IE, cuando se hace clic en el enlace , se genera el correo electrónico, pero solo aparece el texto que se agrega explícitamente, no aparece nada almacenado en la variable quoteinfo. He verificado que el enlace final contiene toda la información de la oferta, simplemente no aparece en el correo electrónico. Como el correo electrónico se genera correctamente con parte de su texto, no creo que sea un problema de desbordamiento de caracteres (y en cualquier caso, esto sucede incluso con 30 caracteres en la variable quoteinfo.

Quizás esto es un problema específico del cliente de correo?

Nota final: soy consciente de que existe un movimiento popular hacia la sustitución de mailto por formularios; por otras razones, no puedo hacerlo aquí, por lo tanto, por favor no responda aconsejando a un cambiar a un formulario.

Un ejemplo específico de cómo aparecerían mis enlaces es el siguiente:

mailto:[email protected]?subject=Submission From Quote Creator &body=Please enter 
your contact information and message here: %0A%0A%0AQuote:%0A#17350 - IFW 2-inch - 
$829.00%0A 
+0

¿El enlace se ha producido correctamente? – Oded

+2

no debería ser href = "mailto: ..." en lugar de href = "email: .." – Raoul

+1

correcto - Lo eliminé accidentalmente para mantener privada la dirección de correo electrónico. está arreglado ahora. – CodeRedd

Respuesta

7

El símbolo de almohadilla (#) tiene un significado especial en las URL (recuerde los nombres de anclaje, por ejemplo, http://example.com#TopOfPage). Reemplácelo con %23.

Ver W3's URL Encoding Reference

Mejor aún, JavaScript puede hacerlo por usted con la función encodeURI().

window.onload = function() { 
 
    var eTo = encodeURI("[email protected]"); 
 
    var eSubj = encodeURI("Submission From Quote Creator"); 
 
    var eBody = encodeURI("Please enter your contact information and message here: \n\n\nQuote:\n#17350 IFW 2-inch -$829.00\n"); 
 

 
    var email = "mailto:" + eTo + "?subject=" + eSubj + "&body=" + eBody; 
 

 
    document.getElementById("sales").href = email; 
 
}
<a href="" id="sales">email</a>

+0

¡Gracias por la aclaración! – CodeRedd

+0

Para reemplazar # signo% 23 funcionó para mí. La función encodeURI() no. – ClearCloud8

+0

@ ClearCloud8 Woops, no se dio cuenta de que el código OP ya tenía un salto de línea codificado, por lo que 'encodeURI' simplemente los habría recodificado. Puse una versión ejecutable que configuraba el enlace mailto en lugar de simplemente ponerlo en una variable como lo hizo el ejemplo anterior. También lo cambié para codificar los tres campos, en lugar de solo el cuerpo (que es donde estaba el problema de los OP). ¿Qué exactamente no funcionó para ti? – Gary

2

En algún lugar a lo largo de estas líneas, está sacando una conclusión falsa. Comience por eliminar la generación de vínculos dinámicos y pruebe utilizando una pieza estática de HTML. Si eso tampoco funciona, publique el enlace exacto que no funciona. Quizás tenga caracteres no válidos en su cita de los que no tenga conocimiento. ¿Quizás comience con un apóstrofo?

Utilizando su código anterior, el enlace sería algo como esto:

<html> 
    <body> 

    <a href="mailto:[email protected]?subject=subject&body=Please enter your contact information and message here: %0A%0A%0AQuote:%0ARaaaawr">email</a> 

    </body> 
</html> 

Esto funciona perfectamente bien (probado IE9, Outlook2007).

+1

Intentó eliminar el enlace dinámico, pero esto no funcionó.Cambié el ejemplo para reflejar los detalles de mis enlaces generados. Como puede ver, los únicos caracteres especiales que se utilizan son signos de libras para los números de productos y signos de dólar para los precios. – CodeRedd

+0

¡Gracias por la ayuda! – CodeRedd

0

Además de URL que codifica la almohadilla (#) como Fantabulum mentions, me gustaría comprobar qué cliente que están utilizando. Si se trata de Outlook (como se deduce de la selección de su etiqueta), es posible que desee ejecutar un "Detectar y reparar" (generalmente se encuentra en el menú Ayuda).

Ejecutar "Detectar y reparar" ha solucionado una serie de problemas con enlaces similares en nuestra intranet. Por lo general, el problema es el resultado de una configuración/archivo corrupto, o algún otro programa de jacking con Outlook - p. una actualización de Windows que revierte una clave de registro que Outlook ha cambiado.

Cuestiones relacionadas