| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Iciar Invitado
|
Publicado: Mar 13 Ene, 2004 10:28 am Asunto: insertar imagen en correo |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Iciar Invitado
|
Publicado: Mar 13 Ene, 2004 10:57 am Asunto: iamgenes en correo |
|
|
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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 13 Ene, 2004 12:59 pm Asunto: |
|
|
Form1->Correo->PostMessage->Body->Add("<img src=\""+"C:\\imagen.jpg"+"\">"); _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 17 Mar, 2017 6:05 pm Asunto: |
|
|
| 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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 18 Mar, 2017 5:36 pm Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 20 Mar, 2017 10:46 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 20 Mar, 2017 10:10 pm Asunto: |
|
|
| 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 |
|
 |
|