PDA

Ver la Versión Completa : Ver E-Mails html ¿?


Adrix
08-08-2003, 16:43:51
hola. En realidad no se bien como formular la consulta... bueno, espero que me entiendan:
Estoy haciendo un programita para recibir e-mails y no se como hacer para ver los que no son solo texto (mucha idea no tengo pero dicen algo asi como <HTML>, o cosas por el estilo, y el tipo de contenido es text/html). ¿Hay algun componente que pueda usar para ver los mensajes tal cual se verian en cualquier otro programa de correo?, si es asi ¿donde lo puedo conseguir?.
Ojala alguien me ayude porque estoy estancada en eso. Bueno, Gracias y saludos.
ah! uso delphi 6...

delphi.com.ar
08-08-2003, 16:46:26
¿Has probado con el TWebBrowser?... no es mas que una instancia del IExplorer!

Saludos!

Adrix
08-08-2003, 16:54:21
Si, lo lei en varios mensajes, el tema es que, si viene con delphi, no lo puedo encontrar, y si no, en la red no lo encuentro... ¿sabrias decirme decirme de donde lo saco?. Gracias! :)

delphi.com.ar
08-08-2003, 17:00:59
Si viene con Delphi, por lo menos desde la versión 5, te comento que desconozco si vino en alguna versión anterior o si viene solo en enterprise que es la versión que yo poseo. Lo tienes en la paleta Internet, y pertenece al paquete "Internet Explorer Components" (dclie50.bpl en Delphi 5), y tienes que tener instalado en IExplorer tanto en el equpo de desarrollo como en donde distribuirás tus aplicaciones.

Saludos!

guillotmarc
08-08-2003, 17:06:25
Hola

Prueba también estos componentes open-source :
http://sourceforge.net/projects/tpipro/

Integran un visor HTML completo (no depende del Explorer)

Saludos.

Adrix
08-08-2003, 17:26:19
Gracias mil gracias, anda perfecto. Me salvaron las neuronas, porque me estaban por estallar!!!! :) . Gracias nuevamente. Chau. Saludos!

Adrix
08-08-2003, 21:08:22
Bueno, de vuelta yo y mi ignorancia... Pude solucionar el tema de visualizar ciertas cosas, pero el tema es que guardo los mails en una base de datos paradox, el cuerpo como tipo Memo, y tendria que poder verlos tambien, pero no se como cargarlos en el WebBrowser. Si alguien me ayuda... Saludos! :rolleyes:

Lmas
13-08-2003, 23:35:36
Hola Adrix.

Vamos con la carga desde el memo ;) ese...

Aquí tienes un procedimiento.


uses
ActiveX;

procedure WB_LoadHTML(AWebBrowser: TWebBrowser; AStream: TStream);
begin
// No debe haber espacio entre la t y los dos puntos.
// Parece que lo mete de propina el editor de post ¿?
AWebBrowser.Navigate('about:blank');
while AWebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;

if Assigned(AWebBrowser.Document) and Assigned(AStream) then
begin
AStream.Seek(0, 0);
(AWebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
end;
end;


Para "vaciar" un WebBrowser:

WB_LoadHTML(WebBrowser1, nil);


Para cargar un archivo HTML en el WebBrowser:

var
fs: TFileStream;
begin
fs := TFileStream.Create('a:\donde\andaras\tu.html', fmOpenRead);
try
WB_LoadHTML(WebBrowser1, fs);
finally
fs.Free;
end;
end;


Y para "llenar" el WebBrowser con un campo memo:

var
bs: TBlobStream;
begin
// MEMO_FIELD será el nombre del campo que se quiere cargar
bs := TBlobStream.Create(MEMO_FIELD, bmRead);
try
WB_LoadHTML(WebBrowser1, bs);
finally
bs.Free;
end;
end;

Adrix
17-08-2003, 22:27:39
Gracias Lmas, el codigo que pusistes me sirvio, pero no para los mensajes bajados utilizando el NMPop3. el problema es el siguiente: al hacer NMPOP31.GetMailMessage(x), en la propiedad MailMessage.Body lo que queda no es exactamente HTML, como que modifica el original.

Por ejemplo:

si en el mensaje original el codigo era:

<DIV><FONT face=Arial size=2>

en MailMessage.Body aparece:

<DIV><FONT face=3DArial size=3D2>

Tambien agrega el signo igual o =20 al final de algunas lineas, y en vez de empezar

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 transitional//EN">

o

<HTML><HEAD>

empieza

------=_NextPart_001_0009_01C360E3.F211C780
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Por esta razon, creo yo, que el webBrowser no lo abre bien, porque si le borro estas cosas lo abre sin problemas.

¿Como hago para transformar lo que se asigna a MailMessage.Body luego de hacer un GetMailMessage(x), en algo que pueda interpretar el webBrowser? :confused:

Lmas
19-08-2003, 02:12:52
Hola Adrix.

Según se desprende del ejemplo que pones, estás tratando con el mensaje tal cual te le bajas del servidor de correo:

"Content-Transfer-Encoding: quoted-printable"

Esto indica que el correo está codificado, y que "=XX" debe sustituirse por Chr($XX), siendo, XX un número en hexadecimal.

Lo normal es que el componente NMPOP3 separe cabecera, cuerpo y datos adjuntos y realice el descodificado por medio de alguna propiedad o método, pero no te lo puedo indicar porque utilizo Delphi 7 y no trae esos componentes.

Borland recomienda sustituir los NM... por los Indy, que creo que vienen con Delphi 6.

en http://www.indyproject.org/indy/demodownloads/I9D6_Demos_24Nov02.zip puedes bajar ejemplos de cómo utilizar los Indy.

También hay un componente muy apañado para el correo en http://groups.yahoo.com/group/tmail2000.

Suerte con ello.

Adrix
21-08-2003, 20:36:10
:) Bueno Lmas, diste en la tecla!, el problema que yo tenia no era en que visualizaba los mails o como los cargaba, sino en como venia el mensaje del servidor!!!. Pido perdon por no haberme dado cuenta antes...
Al final lo solucione con el TMail2000, porque no encontre en el NMPop3 una forma para decodificar los mensajes. No use el IdPop3 porque me borraba los mensajes del servidor una vez bajados, y con el TMail2000 se puede elegir si borrarrlos o no (en realidad por ahi en el de Indy tambien hay una forma, solo que no la encontre).
Muchas gracias a vos y a todos los que ayudaron en esta!!!, espero algun dia ser de util yo... ;)