Buscando por la web, aqui alla mas para alla encontre un codigo que me funciona pero que no entiendo del todo. Solo me interesaria saber el subject de los nuevos correo para sacar los que contengan X expresion en el subject que seria lo que enviaria a imprimir a una impresora o varias. aca dejo codigo. Pero si saben la solucion del anterior problema les agradeceria. En verdad no me gustaria descargarlo solo verificar si dice PAGO he imprimirlo a XXX impresora.
Código Delphi
[-]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
memlog: TMemo;
procedure btn1Click(Sender: TObject);
private
procedure Log( LogMsg: string );
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
IdIMAP4,
IdMessage,
IdExplicitTLSClientServerBase,
IdSSLOpenSSL;
procedure TForm1.btn1Click( Sender: TObject );
var
IMAPClient: TIdIMAP4;
UsersFolders: TStringList;
OpenSSLHandler: TIdSSLIOHandlerSocketOpenSSL;
res: Boolean;
i: integer;
inbox, currUID: string;
cntMsg: integer;
msg, msg2: TIdMessage;
BodyTexts: TStringList;
flags: TIdMessageFlagsSet;
fileName_MailSource, TmpFolder: string;
begin
IMAPClient := TIdIMAP4.Create( nil );
try
OpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create( nil );
try
IMAPClient.Host := 'imap.gmail.com';
IMAPClient.Port := 993;
IMAPClient.Username := '...............@gmail.com';
IMAPClient.Password := '...........';
if Pos( 'gmail.com', IMAPClient.Host ) > 0 then begin
OpenSSLHandler.SSLOptions.Method := sslvSSLv3;
IMAPClient.IOHandler := OpenSSLHandler;
IMAPClient.UseTLS := utUseImplicitTLS;
end;
try
res := IMAPClient.Connect;
if not res then begin
Log( ' Unsuccessful connection.' );
exit;
end;
except
on e: Exception do begin
Log( ' Unsuccessful connection.' );
Log( ' (' + Trim( e.Message ) + ')' );
exit;
end;
end;
try
UsersFolders := TStringList.Create;
try
res := IMAPClient.ListMailBoxes( UsersFolders );
if not res then begin
Log( ' ListMailBoxes error.' );
exit
end;
except
on e: Exception do begin
Log( ' ListMailBoxes error.' );
Log( ' (' + Trim( e.Message ) + ')' );
exit;
end;
end;
Log( 'User folders: ' + IntToStr( UsersFolders.Count ) );
for i := 0 to UsersFolders.Count - 1 do begin
Log( ' [' + inttostr( i + 1 ) + '/' + inttostr( UsersFolders.Count ) + '] Folder: "' + UsersFolders[ i ] + '"' );
end;
IMAPClient.RetrieveOnSelect := rsDisabled;
inbox := 'INBOX';
Log( 'Opening folder "' + inbox + '"...' );
res := IMAPClient.SelectMailBox( inbox );
cntMsg := IMAPClient.MailBox.TotalMsgs;
Log( 'E-mails to read: ' + IntToStr( cntMsg ) );
msg := TIdMessage.Create( nil );
msg2 := TIdMessage.Create( nil );
BodyTexts := TStringList.Create;
TmpFolder := 'c:\tmp\';
res := IMAPClient.CreateMailBox( 'Temp2' );
try
for I := 0 to cntMsg - 1 do begin
Log( ' [' + inttostr( i + 1 ) + '/' + inttostr( cntMsg ) + '] E-mail...' );
IMAPClient.GetUID( i + 1, currUID );
Log( '(Downloading message...)' );
IMAPClient.UIDRetrieve( currUID, msg );
fileName_MailSource := TmpFolder + 'Log_Mail_' + currUID + '.eml';
msg.SaveToFile( fileName_MailSource, false );
msg2.LoadFromFile( fileName_MailSource );
res := IMAPClient.AppendMsg( 'Temp2', msg2, msg2.Headers, [] );
end;
finally
FreeAndNil( msg );
FreeAndNil( msg2 );
FreeAndNil( BodyTexts )
end;
finally
IMAPClient.Disconnect;
end;
finally
OpenSSLHandler.Free;
end;
finally
IMAPClient.Free;
end;
end;
procedure TForm1.Log( LogMsg: string );
begin
memLog.Lines.Add( LogMsg );
Application.ProcessMessages;
end;
end.