Ver Mensaje Individual
  #3  
Antiguo 12-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.112
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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);
}
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita