Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2012
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Cliente de correo con formato HTML

Saludos colegas:

He pasado demasiado trabajo buscando como leer el correo mediante delphi y mostrar el contenido que ya siempre es html y no lograba encontrar la manera, como me tomo dos días buscar la solución la posteo en este forum por si alguna necesita lo mismo que yo y no pase tanto trabajo para encontrarlo.

El tema era lo siguiente algo cencillo leer correo con las indi que hay muchos ejemplos incluyendo en esa web, pero el contenido lo guardan siempre en un TMemo, nunca lo había visto en un browser o al menos una idea de como hacerlo, para ver correctamente los mensajes con formato HTML que son los mas comunes.

Entonces Baje este ejemplo de un Cliente de Correo con INDY del siguiente enlace:
http://www.indyproject.org/DemoDownl...MailClient.zip

Después de buscar en varios lugares encontré esta función que les pongo a continuació que lo que hace es mostrar en un TWebBrowser el contenido HTML pasado como parámetro:

Código Delphi [-]
procedure TfrmMain.WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
var
   sl: TStringList;
   ms: TMemoryStream;
begin
   WebBrowser.Navigate('about:blank') ;
   while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

   if Assigned(WebBrowser.Document) then
   begin
     sl := TStringList.Create;
     try
       ms := TMemoryStream.Create;
       try
         sl.Text := HTMLCode;
         sl.SaveToStream(ms) ;
         ms.Seek(0, 0) ;
         (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
       finally
         ms.Free;
       end;
     finally
       sl.Free;
     end;
   end;
end;

Agregan la unit ActiveX en el proyecto para que puedan asignar la clase IPersistStreamInit, en esta línea
Código Delphi [-]
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;

Porque a cada rato me pasa esto en estos foros, la mayoría de las cosas que se encuentran le faltan a que unit pertenecen algunos procedimientos, funciones o clases extrañas que muchos ni conocemos y a veces nunca se encuentra a cual.

Despues en la unit principal llamada Maind del ejemplo arreglo el codigo de esta manera en el procedimiento RetrieveExecute:

Código Delphi [-]
procedure TfrmMain.RetrieveExecute(Sender: TObject);
  ...........
    ...........
             if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                   //  Memo1.Lines.Clear;
                   //  Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                     WBLoadHTML(WebBrowser1,TIdText(Msg.MessageParts.Items[intIndex]).Body.Text );
                  end

       ...........
   ...........

Después inserto un TWebBrowser en la forma principal y lo sustituyo por el memo1 eliminando este ultimo. y ya queda resuelto entonces y se muestran todos los correos de una forma completamente espectacular y a la altura de un programa hecho en delphi.
Que despues los de C# ven esas cosas HTML en modo Texto en un Tmemo y dicen mira la basura que logran en delphi.

Salud y pesetas para todos Juank
Responder Con Cita
  #2  
Antiguo 04-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por compartirlo
Responder Con Cita
  #3  
Antiguo 23-11-2012
golf2008 golf2008 is offline
Miembro
 
Registrado: feb 2008
Posts: 151
Poder: 17
golf2008 Va por buen camino
Gracias

Juank:

Muy bueno tu aporte, es justo lo que estaba necesitando...

Gracias y saludos.
Responder Con Cita
  #4  
Antiguo 03-12-2012
codicia codicia is offline
Registrado
 
Registrado: dic 2009
Posts: 8
Poder: 0
codicia Va por buen camino
Gracias por compartirlo, te comento algo de paso. Hace un tiempo quise hace lo mismo, quería hacer mi propio Outlook y como lo había planeado me llevaría mucho tiempo pero no había cosas que no podía hacer hasta que me encontré con un problema. El objeto que contiene y permite bajar los mensajes de correo tiene un error y es que no detecta todos los archivos adjuntos. Probá con varios e-mails y veras que en la mayoría lee los adjuntos pero hay algunos, que no se por qué motivo, no los lee o sea es como si no estuvieran. Traté de hacerlo yo mismo recorriendo el mensaje completo y detectar las partes (que son en si los adjuntos) y desistí porque además de complicado (no imposible) me frustró mucho tener que hacer algo complicado cuando si ese objeto andaría bien no tendría que hacer más que pedirle que me devuelva los adjuntos. Sería bueno si alguien solucionó esto que lo publique.
Responder Con Cita
  #5  
Antiguo 01-08-2016
titoarrieta titoarrieta is offline
Registrado
 
Registrado: jul 2007
Posts: 2
Poder: 0
titoarrieta Va por buen camino
Gracias por el tip

Lo estaba buscando y por fin di con este documento
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar correo html con imagen incrustada newtron Internet 25 24-10-2017 12:18:55
Enviar un correo desde delphi HTML flystar Varios 0 25-05-2010 19:12:45
cliente de correo instalado fjcg02 OOP 2 14-11-2005 15:35:47
Como enviar un correo en formato HTML TDworD Internet 0 20-11-2004 20:01:13
Como enviar correo HTML? JDNA Internet 3 15-05-2004 07:21:03


La franja horaria es GMT +2. Ahora son las 11:30:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi