PDA

Ver la Versión Completa : Email HTML sus fotos adjuntarlas


Descendents
19-11-2003, 13:18:29
Buenas

Envio emails con las indy contenttype:text/plain o text/html
es decir texto o html,y tengo el siguiente problema.

Al enviar html, me envia el archivo, pero no sus fotos adjuntas.
Es lógico, pero no se enviar sus fotos adjuntas con el propio archivo html.

Supongo que podria hacer un contenttype='multipart/mixed', y atachar los archivos manualmente.Es decir:
idAttach := TidAttachment.Create(idmessage1, 'c:\foto.jpg');
idAttach.ContentType := 'image/jpeg'.

Pero claro aqui me veo obligado a saber el nombre de todas las fotos.

Entonces tendria que saber alguna manera de sacar de un html todos los archivos que necesita, ya sean jpgs o gifs o lo que sea.

Espero me entiendan

Alguien sabe como puedo solucionarlo?

Un saludo

DarkByte
19-11-2003, 18:01:53
Yo se algo sobre HTML. pero soy algo cortito: ¿Hay para tu pregunta alguna explicación "para torpes"?.

¿Cuáles de estas cosas es la que quieres hacer?.
1) Enviar un correo html con una imagen sin saber la ruta de la img??
2) Buscar una imagen e incrustarla en el documento HTML???
3) Buscar en una página web todos los archivos de imágenes y mandarlos por correo???.

:( Sorry, pero o es la gripe, o me estoy haciendo viejo, no entiendo qué es lo que quiere

Descendents
19-11-2003, 18:08:28
Quiero enviar con las indy un email html.

Hasta aqui todo bien, pero las páginas html, tienen fotos adjuntas.Es decir, por ejemplo google, tiene su logo que es una foto.

Pues yo envio la página web atraves de un email html, y cuando llega, llega sin las fotos.

Quiero con las indy enviar la página entera, es decir la página y sus fotos adjuntas, pero todo dentro del archivo.

Por que sino me llegara como archivo adjunto y eso no lo quiero.

Un saludo

DarkByte
19-11-2003, 18:21:07
No se si habrás diseñado alguna vez alguna web..., pero a mi me da que eso de poner gráficos y html en un archivo no se puede.

Lo que si se puede es, enviar los gráficos de la web como ficheros adjuntos, y añadir al código html lo siguiente:
<img scr="nombreimagen.gif" width="200" height="50">

el 200 de width lo cambias por el ancho que quieres que tenga tu imagen en pantalla y el 50 del height por el alto.

Podrías hacer que tu programa, al darle a la opción "mensaje html" hiciese algo como:

Memo1.Lines.Add ('<html>');
Memo1.Lines.Add ('<body>');
If EditDireccionArchivo.Text <> '' Then
begin
**Código para poner archivos adjuntos en indy, pues yo las indy no las utilizo..., se pondría como dirección del atach el text del EditDireccionArchivo.Text**
Memo1.Lines.Add ('<img scr="'+**alguna rutina para sacar el nombre completo del archivo sin la ruta**+'" width="200"'); height="50">
Memo1.Lines.Add ('<html>');
Memo1.Lines.Add ('</body>');
Memo1.Lines.Add ('</html>');

Bueno... no me parece que me haya explicado muy bien...
lo que hay entre ** son los comentarios...

Descendents
19-11-2003, 19:31:42
Ya lo he conseguido lo pongo aqui lo que me ha ayudado por si alguien le sirve



var
idAttach: TidAttachment;
idText1: TidText;
idText2: TidText;
p: TidMessageParts;
slBody: TStringList;
begin
idMessage1.Recipients.Add;
idMessage1.Recipients[0].Address := 'girlswants_me@yahoo.com';
p := idMessage1.MessageParts;
slBody := TstringList.Create;
try
// you can actually load the body from a RichEdit with
// slBody.Text := RichEdit1.LinesText;
slBody.Add('<html>');
slBody.Add('<head>');
slBody.Add('</head>');
slBody.Add('<body>');
slBody.Add('<br /><br /><b><font color="red">Here is the image:</font></b><br /><br /><br />');
slBody.Add('<img src="cid:sm101yellow.jpg" />');
slBody.Add('</body>');
slBody.Add('</html>');
idText1 := TidText.Create(p, slBody);
idText1.ContentType := 'text/html';
idText2 := TidText.Create(p);
idText2.ContentType := 'text/plain';
idText2.Body.Text := '';
// This shows how to add an attachment
idAttach := TidAttachment.Create(p, 'c:\sm101yellow.jpg');
idAttach.ContentType := 'image/jpeg';
idAttach.ContentDisposition := 'inline';
idAttach.ExtraHeaders.Values['content-id'] := 'sm101yellow.jpg';
idMessage1.Body.Assign(slBody);
idAttach.DisplayName := 'sm101yellow.jpg';
idMessage1.ContentType := 'multipart/mixed';
idSMTP1.Connect;
idSMTP1.Send(idMessage1);
finally
idSMTP1.Disconnect;
slBody.Free;
Showmessage('done');
end;
end;


//Lo modifique para colocar las etiquetas Delphi

Un saludo
Gracias

Descendents
20-11-2003, 07:43:56
No se como no se me ocurrio antes.
Aparte de enviarlo de la manera anterior, que funciona correctamente, también se puede enviar de otra manera, que es poniendo en el html,las rutas de las imagenes rutas de internet.

Es decir http://www.google.com/images/hp0.gif

Con lo que solo envias el html y ya esta.

Y para descargar emails siempre hay conexión en principio.
Y una vez descargado esta en la cache.

Bueno lo digo por si alguien le sirve

Un saludo

DarkByte
20-11-2003, 12:20:14
Ahhhhh, sorry, creí que te referías a enviar un mail html con tus gráficos, no con los graficos de internet...

Siento no haberte sido de ayuda