2012-11-28 6 views

risposta

12

Per ottenere il numero totale di messaggi nella posta in arrivo di Gmail, è necessario prima connettersi al server IMAP di Gmail con le credenziali, selezionare la casella di posta in arrivo di Gmail e per quella casella selezionata leggere il valore della proprietà TotalMsgs.

Nel codice può assomiglia segue (questo codice richiede OpenSSL, quindi non dimenticate di mettere le librerie libeay32.dll e ssleay32.dll ad un percorso visibile al progetto, è possibile scaricare le librerie OpenSSL per Indy in diverse versioni e piattaforme from here):

uses 
    IdIMAP4, IdSSLOpenSSL, IdExplicitTLSClientServerBase; 

function GetGmailMessageCount(const UserName, Password: string): Integer; 
var 
    IMAPClient: TIdIMAP4; 
    OpenSSLHandler: TIdSSLIOHandlerSocketOpenSSL; 
begin 
    Result := 0; 
    IMAPClient := TIdIMAP4.Create(nil); 
    try 
    OpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
    try 
     OpenSSLHandler.SSLOptions.Method := sslvSSLv3; 
     IMAPClient.IOHandler := OpenSSLHandler; 
     IMAPClient.Host := 'imap.gmail.com'; 
     IMAPClient.Port := 993; 
     IMAPClient.UseTLS := utUseImplicitTLS; 
     IMAPClient.Username := UserName; 
     IMAPClient.Password := Password; 
     IMAPClient.Connect; 
     try 
     if IMAPClient.SelectMailBox('INBOX') then 
      Result := IMAPClient.MailBox.TotalMsgs; 
     finally 
     IMAPClient.Disconnect; 
     end; 
    finally 
     OpenSSLHandler.Free; 
    end; 
    finally 
    IMAPClient.Free; 
    end; 
end; 

procedure TForm1.ConnectButtonClick(Sender: TObject); 
begin 
    ShowMessage('Total count of messages in inbox: ' + 
    IntToStr(GetGmailMessageCount('[email protected]', 'Password'))); 
end; 

Si può opzionalmente scaricare un demo project che include OpenSSL v1.0.1c librerie per la piattaforma i386 per le applicazioni a 32 bit (compilato in Delphi 2009).

+1

Grazie Huuuuuge! :) –

+0

Prego! – TLama

+0

Come si può scorrere tra le e-mail per ottenere oggetto o corpo di "i" e-mail nella cartella "posta in arrivo". Questo non sembra funzionare .. IMAPClient.MailBox.MessageList.Messages [i] .Body –

Problemi correlati