Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

insertar imagen en correo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: insertar imagen en correo Responder citando

Hola, estoy usando el componente SMTP para enviar correos.
Bien el tipo de texto que quiero enviar es html para poder insertar iamgenes.
Pero si en la propiedad Body le pongo

Form1->Correo->PostMessage->Body->Add("c:\\imagen.jpg");

me lo pone como texto dentro del correo y no como imagen
Hay alguna forma??

Saludos
Iciar
Volver arriba
Mensaje    Asunto: Responder citando

En lugar de la instrución que usas pon esta otra:
Código:
Form1->Correo->PostMessage->Attachments->Add(<Adjunto 1>)

donde Adjunto 1 es el fichero con su vía de acceso
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: iamgenes en correo Responder citando

Hola, eso ya lo he probado pero no lo quiero como anexos sino como una imagen dentro del correo
Gracias de todos modos
Volver arriba
Mensaje    Asunto: Responder citando

Form1->Correo->PostMessage->Body->Add("<img src=\""+"C:\\imagen.jpg"+"\">");
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Tugui escribió:
Form1->Correo->PostMessage->Body->Add("<img src=\""+"C:\\imagen.jpg"+"\">");

Vale: Hace ya más de trece años de este mensaje pero es que ¡hasta ahora no me ha hecho falta!

¿Seguro que esa sintaxis está bien? Porque al compilar así, más o menos, me da errores por todos lados. El fichero que quiero incrustar en el mensaje lo guardo en la carpeta donde está el eecutable como Imagen.bmp, de forma que el nombre del fichero sería
Cita:
ExtractFilePath(Application->ExeName) + "Imagen.bmp"

¿Como sería la sintaxis entonces? Lo digo porque tanta comilla suelta me suena muy raro.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
El fichero que quiero incrustar en el mensaje lo guardo en la carpeta donde está el eecutable como Imagen.bmp


Con Indy9 y usando el mismo código que has puesto en el siguiente mensaje:

         https://cppbuilder.es/viewtopic.php?p=46838#46838

solo tendrías que añadir las siguientes líneas debajo de la ultima IdMessage1:

Código:
// Añadimos una parte en texto plano, la dejamos en blanco ya que vamos a añadir otra parte en html
// (Esta parte solo  se lee si el cliente de correo es incapaz de mostrar html)

TIdText* text = new TIdText(IdMessage1->MessageParts, NULL);
text->ContentType = "text/plain";

// Añadimos otra parte de texto en HTML donde hacemos referencia a la imagen embebida anteponiendo “cid:”

TIdText* html = new TIdText(IdMessage1->MessageParts, NULL);
html->Body->Add("<html><head></head><body>");
html->Body->Add("<p>Prueba</p>");
html->Body->Add("<img src=\"cid:imagen.bmp\" />"),
html->Body->Add("</body></html>");
html->ContentType = "text/html";

// Añadimos la imagen. Al usar la cabecera “Content-ID” los clientes de correo toman la imagen como “embebida/inline” en lugar de “adjunta”
// (La identificación puede ser cualquier cosa, pero yo he usado el mismo nombre de la imagen)

TIdAttachment* adjunto = new TIdAttachment(IdMessage1->MessageParts, "imagen.bmp");
adjunto->ExtraHeaders->Values["Content-ID"] = "<imagen.bmp>";

Supongo que viendo el ejemplo te puedes hacer una idea de cómo funciona..
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por la respuesta Leo, pero algo más tiene que haber o algo estoy haciendo mal, aunque tal vez tenga que ver con la versión de Indy que en BCB6 es la 10.

Te pongo el código que estoy usando una vez añadida tu sugerencia.
Código:
fPersona->MenCor->ClearBody();
fPersona->MenCor->MessageParts->Clear();
fPersona->MenCor->Recipients->Clear();

fPersona->MenCor->Subject = fDatCor->Asunto->Text;
fPersona->MenCor->Body->Add(fDatCor->Texto->Text);
fPersona->MenCor->Body->Add("");

// Desde aquí compruebo si el usuario quiere usar una imagen embebida
// y si tiene definida una firma personalizada

fPersona->Auxiliar->Close();
fPersona->Auxiliar->SQL->Text = "SELECT Imagen FROM Firma WHERE Nombre = :Nombre AND Literal IS NULL";
fPersona->Auxiliar->ParamByName("Nombre")->AsString = NombreUser;
fPersona->Auxiliar->Open();

if (!fPersona->Auxiliar->IsEmpty())
{
     static_cast<TGraphicField *>(fPersona->Auxiliar->FieldByName("Imagen"))->SaveToFile(ExtractFilePath(Application->ExeName) + "Imagen.bmp");

     TIdText *Text     = new TIdText(fPersona->MenCor->MessageParts, NULL);
     Text->ContentType = "text/plain";

     TIdText *Html     = new TIdText(fPersona->MenCor->MessageParts, NULL);
     fPersona->MenCor->Body->Add("<html><head></head><body>");
     Html->Body->Add("<img src=\"cid:imagen.bmp\" />"),
     Html->Body->Add("</body></html>");
     Html->ContentType = "text/html";

     TIdAttachmentFile *Firma  = new TIdAttachmentFile(fPersona->MenCor->MessageParts, ExtractFilePath(Application->ExeName) + "Imagen.bmp");
     Firma->ExtraHeaders->Values["Content-ID"] = "<imagen.bmp>";
}

fPersona->Auxiliar->Close();
fPersona->Auxiliar->SQL->Text = "SELECT Literal FROM Firma WHERE Nombre = :Nombre AND Literal IS NOT NULL";
fPersona->Auxiliar->ParamByName("Nombre")->AsString = NombreUser;
fPersona->Auxiliar->Open();

if (!fPersona->Auxiliar->FieldByName("Literal")->AsString.IsEmpty())
     fPersona->MenCor->Body->Add(fPersona->Auxiliar->FieldByName("Literal")->AsString);

// Hasta aquí

// Para añadir archivos adjuntos al correo

if (fDatCor->CheckBox1->Checked && !ExtractFileName(fPersona->OpenDialog->FileName).IsEmpty())
     TIdAttachmentFile *Adjunto = new TIdAttachmentFile(fPersona->MenCor->MessageParts, fPersona->OpenDialog->FileName);

// Monto los mensajes haciendo "paquetes" para enviar CCO

for (nItem = 0; nItem < (int)(fPersona->Query->RecordCount / 5) + 1; nItem ++)
{
     fPersona->MenCor->BccList->Clear();

     while (!fPersona->Query->Eof)
     {
          fPersona->MenCor->BccList->Add();
          fPersona->MenCor->BccList->EMailAddresses = fPersona->Query->FieldByName("C_electronico")->AsString;
          fPersona->Query->Next();
          if (fPersona->Query->RecNo % 5 == 0)
               break;
     }
     fPersona->Enviar->Send(Correo);
}

Al compilar me da dos errores de sintaxis en las dos líneas donse se definen los TIdText. No sé si me falta alguna cabecera, porque si la ayuda de BCB flojea muchas veces la Indy más. Le tengo puestas estas:
Cita:
En el .cpp: #include <IdGlobal.hpp>
En el .h: #include <IdMessage.hpp> y #include <IdMessageClient.hpp>

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Solucionado gracias al Club Delphi. Hace falta la cabecera IdText.hpp. Y funciona a la perfección. Mil gracias Leo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
Solucionado gracias al Club Delphi. Hace falta la cabecera IdText.hpp. Y funciona a la perfección. Mil gracias Leo.


Perfecto, no pude verlo antes ya que llevo desde esta mañana temprano fuera de casa.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.