2012-11-28 7 views
7

मैं जीमेल अकाउंट में कैसे लॉगिन कर सकता हूं और घटक के साथ मेलबॉक्स में संदेशों की संख्या कैसे प्राप्त कर सकता हूं?किसी जीमेल खाते में लॉगिन कैसे करें और TIdIMAP4 के साथ मेलबॉक्स में संदेशों की संख्या प्राप्त करें?

+0

क्या यह एक जीमेल प्रश्न है, या एक आईपैप सवाल है? –

+0

@ डेविड हेफरन इंडी आईएमएपी। –

+2

ठीक है, तो जीमेल भाग मुद्दा नहीं है। संभावित रूप से कोई भी इंपैप सर्वर हो सकता है जिसे आप संवाद करते हैं। –

उत्तर

12

अपने जीमेल के इनबॉक्स में संदेशों की कुल संख्या प्राप्त करने के लिए, आपको पहले अपने जीमेल आईएमएपी सर्वर से अपने क्रेडेंशियल से कनेक्ट करने की आवश्यकता है, जीमेल के इनबॉक्स मेलबॉक्स का चयन करें और उस चयनित मेलबॉक्स के लिए TotalMsgs संपत्ति का मूल्य पढ़ें।

कोड में ऐसा लगता है कि हो सकता है इस प्रकार है (इस कोड OpenSSL आवश्यकता है, इसलिए मत भूलना एक रास्ता अपनी परियोजना के लिए दिखाई दे करने के लिए libeay32.dll और ssleay32.dll पुस्तकालयों डाल करने के लिए, आप विभिन्न संस्करणों और प्लेटफार्मों from here में इंडी लिए OpenSSL लाइब्रेरी डाउनलोड कर सकते):

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; 

आप वैकल्पिक रूप से एक demo project जो (32-बिट अनुप्रयोगों के लिए i386 मंच डेल्फी 2009 में संकलित) के लिए OpenSSL v1.0.1c संग्रहालय शामिल हैं डाउनलोड कर सकते हैं।

+1

HUuuuuge धन्यवाद! :) –

+0

आपका स्वागत है! – TLama

+0

फ़ोल्डर "इनबॉक्स" में "i" ईमेल के विषय या निकाय के लिए आप ईमेल के माध्यम से कैसे लूप कर सकते हैं। यह काम नहीं कर रहा है .. IMAPClient.MailBox.MessageList.Messages [i] .बीडी –

संबंधित मुद्दे