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

 
 
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
 



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 07:46:29.


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