cliente de correo codigo fuente
Alguien me podria pasar lo basico para hacer un cliente de correo en delphi. Es que estoy buscando y no he encontradonada. Es una cosa que me gustaria hacer. Gracias
Para empezar a programar un cliente de correo, imagino que POP3, puedes empezar por conocer los
componentes TIdPOP3 (Indy Clientes) y TIdMessage (Indy Misc).
Haz esta prueba:
1. Crea un nuevo proyecto de aplicaci贸n (Form1)
2. Inserta un TListView (ListView1) a Form1
2.1 A帽ade 4 columnas
2.3 Propiedad "RowSelect" a "True"
2.3 Propiedad "ViewStyle" a "vsReport"
2.4 A帽ade un procedimiento al evento "OnDblClick"
3. Inserta un TIdPOP3 (IdPOP31) a Form1
4. Inserta un TIdMessage (IdMessage1) a Form1
5. Inserta un TButton (Button1) a Form1
5.1 Propiedad "Caption" a "Recoger correo"
5.2 A帽ade un procedimiento al evento "OnCLick"
6.- Inserta un TMemo (Memo1) a Form1
Con esto tenemos los componentes y controles m铆nimos para comenzar a probar. Ahora viene el c贸digo:
Codigo para "OnClick" de Button1
procedure TForm1.Button1Click(Sender: TObject);
var
Counter: Integer;
ListItem: TListItem;
begin
ListView1.Clear;
if IdPOP31.Connected then IdPOP31.Disconnect;
IdPOP31.Host:='nombre_del_host_o_ip';
IdPOP31.Port:=110;
IdPOP31.UserID:='nombre_de_usuario';
IdPOP31.Password:='contrase帽a_de_usuario';
IdPOP31.Connect;
if IdPOP31.CheckMessages>0 then
begin
for Counter:=1 to IdPOP31.CheckMessages do
begin
IdMessage1.Clear;
IdPOP31.RetrieveHeader(Counter,IdMessage1);
ListItem:=ListView1.Items.Add;
ListItem.Caption:=DateToStr(IdMessage1.Date);
ListItem.SubItems.Add(IdMessage1.From.Text);
ListItem.SubItems.Add(IdMessage1.Subject);
ListItem.SubItems.Add(IntToStr(IdPOP31.RetrieveMsgSize(Counter)));
end;
end;
end;
Codigo para "OnDblClick" de ListView1
procedure TForm1.ListView1DblClick(Sender: TObject);
var
Counter: Integer;
begin
if ListView1.Items.Count>0 then
begin
IdMessage1.Clear;
IdPOP31.Retrieve(ListView1.ItemFocused.Index+1,IdMessage1);
for Counter:=0 to IdMessage1.MessageParts.Count-1 do
begin
if IdMessage1.MessageParts.Items[PartCounter] is TIdAttachment then
begin
{Archivos adjuntos}
end
else if IdMessage1.MessageParts.Items[PartCounter] is TIdText then
begin
{Cuerpo del correo}
Memo1.Lines:=TIdText(IdMessage1.MessageParts.Items[PartCounter]).Body
end;
end;
end;
Espero que te valga como comienzo, y que te funcione, es que con el tama帽o mimino de esta TextArea :P no se si ira todo correcto, de todas formas si tienes alg煤n problemas ya escribiras. Un saludo.
componentes TIdPOP3 (Indy Clientes) y TIdMessage (Indy Misc).
Haz esta prueba:
1. Crea un nuevo proyecto de aplicaci贸n (Form1)
2. Inserta un TListView (ListView1) a Form1
2.1 A帽ade 4 columnas
2.3 Propiedad "RowSelect" a "True"
2.3 Propiedad "ViewStyle" a "vsReport"
2.4 A帽ade un procedimiento al evento "OnDblClick"
3. Inserta un TIdPOP3 (IdPOP31) a Form1
4. Inserta un TIdMessage (IdMessage1) a Form1
5. Inserta un TButton (Button1) a Form1
5.1 Propiedad "Caption" a "Recoger correo"
5.2 A帽ade un procedimiento al evento "OnCLick"
6.- Inserta un TMemo (Memo1) a Form1
Con esto tenemos los componentes y controles m铆nimos para comenzar a probar. Ahora viene el c贸digo:
Codigo para "OnClick" de Button1
procedure TForm1.Button1Click(Sender: TObject);
var
Counter: Integer;
ListItem: TListItem;
begin
ListView1.Clear;
if IdPOP31.Connected then IdPOP31.Disconnect;
IdPOP31.Host:='nombre_del_host_o_ip';
IdPOP31.Port:=110;
IdPOP31.UserID:='nombre_de_usuario';
IdPOP31.Password:='contrase帽a_de_usuario';
IdPOP31.Connect;
if IdPOP31.CheckMessages>0 then
begin
for Counter:=1 to IdPOP31.CheckMessages do
begin
IdMessage1.Clear;
IdPOP31.RetrieveHeader(Counter,IdMessage1);
ListItem:=ListView1.Items.Add;
ListItem.Caption:=DateToStr(IdMessage1.Date);
ListItem.SubItems.Add(IdMessage1.From.Text);
ListItem.SubItems.Add(IdMessage1.Subject);
ListItem.SubItems.Add(IntToStr(IdPOP31.RetrieveMsgSize(Counter)));
end;
end;
end;
Codigo para "OnDblClick" de ListView1
procedure TForm1.ListView1DblClick(Sender: TObject);
var
Counter: Integer;
begin
if ListView1.Items.Count>0 then
begin
IdMessage1.Clear;
IdPOP31.Retrieve(ListView1.ItemFocused.Index+1,IdMessage1);
for Counter:=0 to IdMessage1.MessageParts.Count-1 do
begin
if IdMessage1.MessageParts.Items[PartCounter] is TIdAttachment then
begin
{Archivos adjuntos}
end
else if IdMessage1.MessageParts.Items[PartCounter] is TIdText then
begin
{Cuerpo del correo}
Memo1.Lines:=TIdText(IdMessage1.MessageParts.Items[PartCounter]).Body
end;
end;
end;
Espero que te valga como comienzo, y que te funcione, es que con el tama帽o mimino de esta TextArea :P no se si ira todo correcto, de todas formas si tienes alg煤n problemas ya escribiras. Un saludo.
