2012-11-28 15 views

Odpowiedz

12

Aby uzyskać całkowitą liczbę wiadomości w skrzynce odbiorczej Gmaila, musisz najpierw połączyć się z serwerem IMAP Gmail za pomocą poświadczeń, wybrać skrzynkę pocztową skrzynki odbiorczej Gmaila i dla wybranej skrzynki pocztowej odczytać wartość właściwości TotalMsgs.

W kodzie może wygląda następująco (kod ten wymaga OpenSSL, więc nie zapomnij umieścić bibliotek libeay32.dll i ssleay32.dll do ścieżki widocznej do projektu, można pobrać biblioteki OpenSSL do Indy w różnych wersjach i platform 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; 

można ewentualnie pobrać demo project który obejmuje OpenSSL v1.0.1c biblioteki dla i386 platformy dla aplikacji 32-bitowych (sporządzoną w Delphi 2009).

+1

HUuuuuge thanks! :) –

+0

Nie ma za co! – TLama

+0

W jaki sposób można przeglądać pocztę e-mail, aby uzyskać temat lub treść wiadomości "i" w folderze "Skrzynka odbiorcza". To nie działa. IMAPClient.MailBox.MessageList.Messages [i] .Body –

Powiązane problemy