unit GmailUnreadMailsU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdIOHandler, IdIOHandlerSocket,
IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdIMAP4;
type
TGmailUnreadMailsF = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
EditCorreo: TEdit;
EditPass: TEdit;
BtnConecta: TButton;
Memo1: TMemo;
BtnGetNumlMailsInbox: TButton;
IdIMAP41: TIdIMAP4;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
IdMessage1: TIdMessage;
BtnGetUnreadlMails: TButton;
Memo2: TMemo;
EditUUID: TEdit;
BtnGetData: TButton;
Label6: TLabel;
Memo3: TMemo;
Memo4: TMemo;
procedure log(linea:string);
procedure BtnConectaClick(Sender: TObject);
procedure BtnGetNumlMailsInboxClick(Sender: TObject);
procedure BtnGetUnreadlMailsClick(Sender: TObject);
private
public
end;
var
GmailUnreadMailsF: TGmailUnreadMailsF;
implementation
{$R *.dfm}
procedure TGmailUnreadMailsF.log(linea:string);
begin
Memo1.Lines.Add(linea);
end;
procedure TGmailUnreadMailsF.BtnConectaClick(Sender: TObject);
begin
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv3;
IdIMAP41.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdIMAP41.Host := 'imap.gmail.com';
IdIMAP41.Port := 993;
IdIMAP41.ReadTimeout := 30000;
IdIMAP41.UseTLS := utUseImplicitTLS;
IdIMAP41.Username := EditCorreo.Text;
IdIMAP41.Password := EditPass.Text;
IdIMAP41.Connect;
if IdIMAP41.Connected then
begin
Label3.Caption := 'Si Conectado';
end
else
begin
Label3.Caption := 'No Conectado';
end;
end;
procedure TGmailUnreadMailsF.BtnGetNumlMailsInboxClick(Sender: TObject);
var
iTotalMsgsInbox : Integer;
begin
if IdIMAP41.SelectMailBox('INBOX') then
iTotalMsgsInbox := IdIMAP41.MailBox.TotalMsgs;
IdIMAP41.StatusMailBox('INBOX', IdIMAP41.MailBox);
log('Total de mails en la carpeta de INBOX es : '+ IntToStr(iTotalMsgsInbox) );
end;
procedure TGmailUnreadMailsF.BtnGetUnreadlMailsClick(Sender: TObject);
var
nummsgs:Integer;
n : Integer;
i : Integer;
TheUID: string;
TheFlags: TIdMessageFlagsSet;
begin
log('Total de mails en la carpeta de IdIMAP41.MailBox.UnseenMsgs es : '+ IntToStr(IdIMAP41.MailBox.UnseenMsgs) );
log('Total de mails en la carpeta de IdIMAP41.MailBox.RecentMsgs es : '+ IntToStr(IdIMAP41.MailBox.RecentMsgs) );
nummsgs:=idImap41.MailBox.TotalMsgs;
for i := 0 to nummsgs-1 do
begin
idimap41.GetUID(i+1, TheUID);
idimap41.UIDRetrieveFlags(TheUID, TheFlags);
idimap41.UIDRetrieveHeader(TheUID, IdMessage1);
log(IntToStr( i+1) + ' '+ IntToStr(i+1));
log(IntToStr( i+1) +' ' + TheUID);
if mfSeen in TheFlags then begin
log(IntToStr(i+1 ) + ' ' + 'Yes' );
end else begin
log(IntToStr( i+1) + ' ' + 'No');
end;
log(IntToStr( i+1) + IdMessage1.Subject);
end;
idimap41.RetrieveHeader(1, IdMessage1);
Memo3.Lines.Add( IdMessage1.FromList.EMailAddresses);
Memo3.Lines.Add( IdMessage1.Recipients.EMailAddresses);
Memo3.Lines.Add( IdMessage1.Subject);
Memo3.Lines.Add( IdMessage1.CCList.EMailAddresses);
Memo4.Lines.Add( IdMessage1.Body.Text);
end;
end.