FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
email con shellexecute, como insertar un salto de linea
Estoy intentando generar un email, con el siguiente codigo, el problema es que en el cuerpo, aunque utilizo un tmemo, no se como poner saltos de linea, ya que a la hora de ver el email, esta todo seguido.
Cita:
__________________
Un saludo Antonio |
#2
|
||||
|
||||
¿Has probado pasando el "text" completo?, tmemo.lines.text
|
#3
|
||||
|
||||
Hola,
Yo tuve que ingeniarme algo similar con Delphi, esto es, preparar un correo para ser enviado por el cliente de correo del usuario, pero, con el cuerpo del mismo debidamente formateado. Al cabo es cuestión de hacer algo parecido a lo siguiente, que es una traducción casi literal de la función que empleé con Delphi para el mismo asunto. Lo he probado y parece funcionar bien, aunque puedes limar la función tanto como te plazca. El truco está en añadir tantos "&body=linea del cuerpo" como líneas sean necesarias. En este caso podrías utilizar la función directamente con "TMemo", esto es, enviando como parámetro las líneas de este: Código:
void EnviarCorreo(AnsiString email, AnsiString asunto, TStrings* cuerpo) { // Constantes que contiene los "strings" a los que luego // habremos de dar el formato adecuado con los parámetros // de esta función. // const AnsiString LINEAS_CUERPO = "&body=\"%s\""; const AnsiString ASUNTO_CORREO = "mailto:%s?subject=%s"; AnsiString cuerpoTemporal; // Aquí iremos guardando el cuerpo for(int i = 0; i <= cuerpo->Count-1; i++) { // Por cada línea en el cuerpo // Vamos añadiendo líneas debidamente formateadas al "cuerpoTemporal" cuerpoTemporal += Format(LINEAS_CUERPO, OPENARRAY(TVarRec, (cuerpo->Strings[i]))); } // Preparamos el "asunto" del correo, que incluirá también // la dirección de correo del destinatario: nótese cómo se // utiliza la constante ASUNTO_CORREO debidamente formateada. // AnsiString asuntoCorreo = Format(ASUNTO_CORREO, OPENARRAY(TVarRec, (email, asunto))); // En la siguiente variable "juntamos" el asunto, el email // y el cuerpo del correo, ya todo formateado y listo para // utilizarlo luego en la función "ShellExecute". // AnsiString correoPreparado = asuntoCorreo + cuerpoTemporal; // Abrimos el cliente de correo del usuario ya con el correo // que hemos preparado más arriba listo para ser enviado. // ShellExecute(0, "open", correoPreparado.c_str(), 0, 0, SW_SHOW); } // Ejemplo de llamada a la función "EnviarCorreo" // void __fastcall TForm1::Button1Click(TObject *Sender) { EnviarCorreo("correo@servidor.com", "Asunto del correo", Memo1->Lines); } |
#4
|
||||
|
||||
Pues no lo pillo...
vamos por partes... He probado a meter en la cadena...\s, \\s, #13....y nada de nada, sigue sin ponerme un salto de linea, ni poniendolo como cadena, ni como caracter ni nada. He probado tb tu ejemplo, pero me genera una cadena asi: Intento meter el siguiente email: Email : email@email.com Asunto : asunto Cuerpo : 1 2 3 Código:
mailto:email@email.com?Subject=asunto&body=\"1\"&body=\"2\"&body=\"3\" - Argumento no valido en la linea de comandos. Compruebe el modificador que esta usando - Supongo que es normal, porque, hay 3 cuerpos en la cadena del email...eso no es normal, pero vamos que es el ejemplo que has puesto... algun consejillo?
__________________
Un saludo Antonio Última edición por alt126 fecha: 13-12-2005 a las 10:02:06. |
#5
|
||||
|
||||
Hola,
Puedo decirte (para empezar) que el ejemplo que he puesto me ha funcionado perfectamente, pero, que lo he probado con Mozilla ThunderBird únicamente: no sé si funcinoaría en otros clientes de correo, pero, es de suponer que sí. El quid del asunto está en que cada línea del cuerpo del correo ha de añadirse en la cadena "body=%S", justamente, en la "%S". La función que he preparado (que ya he dicho que es una mera traducción de una que tengo en Delphi para lo mismo) requiere que le pases como parámetro un "TStrings", por ejemplo, las líneas de un "TMemo". Ya la propia función se encarga de formatear debidamente el correo, y, como te digo, al menos en mi caso no tengo problemas al utilizarla. Es decir, prueba a pasarle como parámetro un "TStrings" a la función, las líneas del "TMemo" que sea, por ejemplo, porque debería irte bien. De todos modos, si quieres personalizar la función de más arriba como mejor te parezca, recuerda dónde está la "dificultad": cada línea del correo (incompresiblemente para mí, pero, así es o así al menos funciona) tiene que ir en una cadena "body=%S": ya podrás hacer pruebas para ver qué es lo que en realidad se pasa por la línea de comandos. Cita:
¡Suerte! |
#6
|
||||
|
||||
Puessssss...va a ser que no....pq he probado lo siguiente...y fijate en los resultados:
al poner como cuerpo : Código:
"&body=aaaa&body=bbbb&body=ccc" ?¿?¿?¿ hago acaso algo mal?
__________________
Un saludo Antonio |
|
|
|