anchor.diff:      property ReceivedDate : TDateTime read FReceivedDate write FReceivedDate;
       property Sender : String read FSender write FSender;
     end;
  +
  +  TProcessMailMessage = procedure (aMailMessage : TReceivedMail; out aCanDeleteMailFromServer : boolean) of object;
   
     { TGetMailPop3 }
   
  
positive.code:     constructor Create;
      destructor Destroy; override;
  
      function CheckMail(out aErrorMessage: String) : boolean;
      function MailsCount : integer;
      function GetMail (const aIndex : integer): TReceivedMail;
  
  
negative.code:           try
              tmpPop3.Retrieve(i, msg);
              if (not FAcceptOnlyMailFromSpecificDomain) or (FAllowedSenderDomains.IndexOf(LowerCase(msg.From.Domain)) >= 0) then
              begin
                curMailMessage := AddReceivedMail;
                ImportMessage(msg, curMailMessage);
                doDelete:= false;
                aProcessMessage(curMailMessage, doDelete);
                if doDelete then
                  tmpPop3.Delete(i);
              end
              else
              begin
                {$IFDEF MLOG_AVAILABLE}
                logger.Info('Discarded mail from ' + msg.From.Address);
                {$ENDIF}
                tmpPop3.Delete(i);
              end;
  
            finally
              msg.Free;
            end;
  