Insertar saltos de línea con mailto
Necesito componer un correo desde una página php y mi servidor no soporta la función mail().
Estoy usando mailto: para abrir el cliente de correo Mozilla y componer el e-mail pero no me reconoce los saltos de línea (he probado con "\n", "\r", "<br>"...)
Con Outlook me funciona el "\n", ¿Se os ocurre alguna opción?.
¡Gracias!, Fernando
Estoy usando mailto: para abrir el cliente de correo Mozilla y componer el e-mail pero no me reconoce los saltos de línea (he probado con "\n", "\r", "<br>"...)
Con Outlook me funciona el "\n", ¿Se os ocurre alguna opción?.
¡Gracias!, Fernando
1 Respuesta
Respuesta de mcmarthygan
1
1
mcmarthygan, Soy Programador-Analista
Fernando esto es lo que yo he hecho.
<html>
<head><title>Prueba Mail</title></head>
<body><br><br><br><br><br>
<center><form name="frmDatos">
<b>Mail Destino:</b> <input type="text" name="email"><br>
<b>Cuerpo:</b> <textarea name="campo1"></textarea><br><br>
<input type='button' value="Enviar mail" onClick='enviarEmail()'>
</form></center>
</body>
</html>
<script language="JavaScript" type="text/JavaScript">
function enviarEmail(){
//var linea = "\n";
// var linea = "\r";
// var linea = "\n\r";
var linea = "%0D%0A";
var para = document.frmDatos.email.value;
var cc = "[email protected]";
var asunto = "Asunto tal y cual";
var cuerpo = "En un lugar de la mancha de cuyo nombre..." + linea + linea;
cuerpo += "Campo1: " + escape(document.frmDatos.campo1.value) + linea;
cuerpo += "etc. etc..." + linea + linea;
cuerpo += "Un Saludo" + linea + linea;
var mensaje = "mailto:" + para +
"?cc=" + cc +
"&subject=" + escape(asunto) +
"&body=" + cuerpo;
window.location = mensaje;
}
</script>
El problema con el %0D%0A está en que no le puedes hacer el escape con las líneas insertadas. Haz el escape a los campos antes de agregarlos al cuerpo.
La verdad que aquí el mozilla no lo tengo ni nada y en mi casa es que formatee y todavía no he instalado linux :(. En fin. Prueba el código a ver que tal
<html>
<head><title>Prueba Mail</title></head>
<body><br><br><br><br><br>
<center><form name="frmDatos">
<b>Mail Destino:</b> <input type="text" name="email"><br>
<b>Cuerpo:</b> <textarea name="campo1"></textarea><br><br>
<input type='button' value="Enviar mail" onClick='enviarEmail()'>
</form></center>
</body>
</html>
<script language="JavaScript" type="text/JavaScript">
function enviarEmail(){
//var linea = "\n";
// var linea = "\r";
// var linea = "\n\r";
var linea = "%0D%0A";
var para = document.frmDatos.email.value;
var cc = "[email protected]";
var asunto = "Asunto tal y cual";
var cuerpo = "En un lugar de la mancha de cuyo nombre..." + linea + linea;
cuerpo += "Campo1: " + escape(document.frmDatos.campo1.value) + linea;
cuerpo += "etc. etc..." + linea + linea;
cuerpo += "Un Saludo" + linea + linea;
var mensaje = "mailto:" + para +
"?cc=" + cc +
"&subject=" + escape(asunto) +
"&body=" + cuerpo;
window.location = mensaje;
}
</script>
El problema con el %0D%0A está en que no le puedes hacer el escape con las líneas insertadas. Haz el escape a los campos antes de agregarlos al cuerpo.
La verdad que aquí el mozilla no lo tengo ni nada y en mi casa es que formatee y todavía no he instalado linux :(. En fin. Prueba el código a ver que tal
Código:
fichero.php
include(tal);
include(fichero de funciones);
...
...
formulario
input tal, input cual...
un botón (input type image)
otro botón...
<input type="image" nClick="enviarEmail()" ...
fichero de funciones
funciones javascript
<script language="JavaScript" type="text/JavaScript">
<!--
function enviarEmail() {
var linea = "\n";
// var linea = "\r";
// var linea = "\n\r";
// var linea = "%0D%0A";
var para = document.frmDatos.email.value;
var cc = "[email protected]";
var asunto = "Asunto tal y cual";
var cuerpo = "En un lugar de la mancha de cuyo nombre..." + linea + linea;
cuerpo += "Campo1: " + document.frmDatos.campo1.value + linea;
cuerpo += "Campo2: " + document.frmDatos.campo2.value + linea;
cuerpo += "Campo3: " + document.frmDatos.campo3.value + linea;
cuerpo += "etc. etc.: " + document.frmDatos.etc.value + linea;
cuerpo += "Un Saludo" + linea + linea;
var mensaje = "mailto:" + para +
"?cc=" + cc +
"&subject=" + escape(asunto) +
"&body=" + escape(cuerpo);
window.location = mensaje;
} // Fin de la función enviarEmail()
//-->
</script>
fichero.php
include(tal);
include(fichero de funciones);
...
...
formulario
input tal, input cual...
un botón (input type image)
otro botón...
<input type="image" nClick="enviarEmail()" ...
fichero de funciones
funciones javascript
<script language="JavaScript" type="text/JavaScript">
<!--
function enviarEmail() {
var linea = "\n";
// var linea = "\r";
// var linea = "\n\r";
// var linea = "%0D%0A";
var para = document.frmDatos.email.value;
var cc = "[email protected]";
var asunto = "Asunto tal y cual";
var cuerpo = "En un lugar de la mancha de cuyo nombre..." + linea + linea;
cuerpo += "Campo1: " + document.frmDatos.campo1.value + linea;
cuerpo += "Campo2: " + document.frmDatos.campo2.value + linea;
cuerpo += "Campo3: " + document.frmDatos.campo3.value + linea;
cuerpo += "etc. etc.: " + document.frmDatos.etc.value + linea;
cuerpo += "Un Saludo" + linea + linea;
var mensaje = "mailto:" + para +
"?cc=" + cc +
"&subject=" + escape(asunto) +
"&body=" + escape(cuerpo);
window.location = mensaje;
} // Fin de la función enviarEmail()
//-->
</script>
Yo creo que tienes el mismo problema que otra persona que pregunto algo similar pero para archivos (no le insertaba saltos de línea en el archivo). Prueba a poner "\r\n". Yo creo que esa es la solución, ponerlos los dos en conjunto y quizá te funcione.
Sigue sin funcionar, ya había probado antes con "\r", ahora he probado como tu me dices con "\r\n" y también, por si acaso, "\n\r" y no hay nada que hacer.
¿No será que hay que enviarle también la cabecera además de "para, cc, asunto, y cuerpo"?
¿No será que hay que enviarle también la cabecera además de "para, cc, asunto, y cuerpo"?
Pues me parece que sí. He mirado tu problema por otra parte y creo que en esta página está la respuesta a tú problema, y yo creo que debería funcionar para cualquier cliente de correo. Esta es la dirección:
http://www.programacion.com/html/articulo/tw_email/
http://www.programacion.com/html/articulo/tw_email/
Pues no, todavía no. Al menos "\n" o, "\r" funcionan con Outlook Express, pero con Mozilla no funciona de ninguna forma.
¿Quieres qué te envíe el código?
¿Quieres qué te envíe el código?
Claro hombre, no te preocupes y mandame el código, a ver si entre los dos lo averiguamos :P. Mi gozo en un pozo pensando que te lo había arreglado, jajaja. Venga va, envía el código.
Ya había probado. No funciona.
La función mail no funciona porque, en nuestro servidor no han habilitado un servidor de correo y no creo que lo hagan en un futuro inmediato.
La función mail no funciona porque, en nuestro servidor no han habilitado un servidor de correo y no creo que lo hagan en un futuro inmediato.
Pon el código otra vez como tú me lo mandaste a mí, pero en lugar de poner el \n entre comillas dobles, ponlo entre comillas simples. Si no es eso, yo casi que me paso a averiguarte porque no te funciona la función mail de php si quieres. Ahora mismo otra solución no he encontrado por ningún lado.
A ver que pasa...
A ver que pasa...
Prueba en lugar de ejecutar directamente el mailto, a mandar antes a una página de php intermedia donde al finalizar de montar la cadena
Como tu quieres, después ejecutes el mailto de javascript.
Como tu quieres, después ejecutes el mailto de javascript.
Sigue sin funcionar. Con Outlook sin problemas, pero el amigo Mozilla, ¿uummmm?%&Mm%·$·"? uummm ni con escape ni sin escape, ¿alguna sugerencia más?, necesito alguna idea, ya no se que probar y cada vez más usuarios que utilizan la aplicación se están pasando a Mozilla; ¿por que no habrá sacado ya el Explorer las puñeteras pestañas?
Un Saludo,
Fernando
Un Saludo,
Fernando
Nada, imposible.
Dejalo, mañana me voy de vacaciones una semanita, a ver si vuelvo de la playa inspirado.
Un Saludo y Muchas Gracias por tu ayuda.
Si se te ocurre algo más...
Dejalo, mañana me voy de vacaciones una semanita, a ver si vuelvo de la playa inspirado.
Un Saludo y Muchas Gracias por tu ayuda.
Si se te ocurre algo más...
Supongo que has montado la cadena mediante php, pero no se si habrás utilizado ya para separar esto chr(13) y chr(10) (creo que son el retorno de carro o intro y el comienzo de línea o line feed, sino me equivoco), para poner eso en lugar del \n. Yo es esa la última sugerencia que se me ocurre. Si no va es que el mozilla es una... :P .Espero que pases unas buenas vacaciones. Yo también me iré ahora 8 0 9 días. Bueno sino sirve y a ti tampoco se te ocurre na, os finaliza la pregunta como sea y yastá. Siento que no hayamos dao (o por lo menos hasta ahora) con la tecla.
Un saludo y muchas de nada hombre :).
PD: Igualmente si lo resuelves de otra manera no tardes en decírmelo, eh!? :P ;)
Un saludo y muchas de nada hombre :).
PD: Igualmente si lo resuelves de otra manera no tardes en decírmelo, eh!? :P ;)
- Compartir respuesta
- Anónimo
ahora mismo