2012-11-28 24 views
7

Làm cách nào để đăng nhập vào tài khoản Gmail và nhận được số lượng thư trong hộp thư với thành phần TIdIMAP4?Làm cách nào để đăng nhập vào tài khoản Gmail và nhận được số lượng thư trong hộp thư với TIdIMAP4?

+0

Đây có phải là câu hỏi về gmail hay câu hỏi imap không? –

+0

@DavidHeffernan Indy IMAP. –

+2

OK, vì vậy phần gmail không phải là vấn đề. Có lẽ là bất kỳ máy chủ imap nào mà bạn giao tiếp. –

Trả lời

12

Để nhận tổng số thư trong hộp thư đến của Gmail, trước tiên bạn cần kết nối với máy chủ IMAP của Gmail bằng thông tin đăng nhập của bạn, chọn hộp thư đến của hộp thư đến Gmail và hộp thư đã chọn đó đọc giá trị của thuộc tính TotalMsgs.

Trong mã nó có thể trông giống như sau (mã này đòi hỏi OpenSSL, vì vậy đừng quên đặt libeay32.dllssleay32.dll thư viện để có thể nhìn thấy một con đường để dự án của bạn, bạn có thể tải về các thư viện OpenSSL cho Indy trong các phiên bản khác nhau và các nền tảng 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; 

Bạn có thể tùy chọn tải về một demo project trong đó bao gồm OpenSSL v1.0.1c thư viện cho nền tảng i386 cho các ứng dụng 32-bit (biên soạn trong Delphi 2009).

+1

HUuuuuge cảm ơn! :) –

+0

Bạn được chào đón! – TLama

+0

Làm cách nào bạn có thể lặp qua email để lấy chủ đề hoặc nội dung của email "i" trong thư mục "hộp thư đến". Điều này dường như không hoạt động .. IMAPClient.MailBox.MessageList.Messages [i] .Body –

Các vấn đề liên quan