Yes, this is possible. Have a look at the following code, you should be able to modify it easily for your own purposes.
procedure readmails;
var
NumMails: integer;
outlook: OLEvariant;
namespace: OLEvariant;
folder: OLEvariant;
MailCounter: integer;
MailMessage: variant;
NUMATTACHMENTS: integer;
counter: integer;
ATTFILENAME : variant;
FILENAME : string;
begin
NumMails:=0;
namespace.logon(EmptyParam,EmptyParam,False,True);
folder:=namespace.getdefaultfolder(6);
MailCounter:=1;
PROCESSINGlbl.caption:='Processing 0 of '+inttostr(folder.items.count)+' E-mails';
while (folder.items.count>0) do
begin
NumMails:=NumMails+1;
MailCounter:=folder.items.count;
MailMessage:=folder.items(MailCounter);
PROCESSINGlbl.caption:='Processing '+inttostr(MailCounter)+' of '+inttostr(folder.items.count)+' E-mails';
NUMATTACHMENTS:=MailMessage.attachments.count;
FOR counter:=1 to NUMATTACHMENTS DO
BEGIN
ATTFILENAME:=MailMessage.Attachments.item(counter).filename;
filename:='C:\ATTACHMENTS\'+ATTFILENAME;
MailMessage.attachments.item(counter).saveasfile(filename);
END;
MailMessage.delete;
end;
end;