2015-02-09 76 views
1

我嘗試連接到一個測試Gmail帳戶。 我已經激活IMAP,停止了我的本地防火牆和防病毒。德爾福:連接IMAP到Gmail帳戶

我使用2個印組件:

IMAP:TIdIMAP4; ssl:TIdSSLIOHandlerSocketOpenSSL;

和我做

imap.Connect();

它連接但不久後斷開連接。

這裏的項目(德爾福XE3)與包括用戶和PSW到Gmail測試帳戶。

http://sqlmis.com/update/testimap.zip

我試着在TIdSSLIOHandlerSocketOpenSSL組件和TIdIMAP4但沒有成功不同的選項。

的憑據:

host=imap.gmail.com 
[email protected] 

和2 Indy組件是:

object ssl: TIdSSLIOHandlerSocketOpenSSL 
    OnStatus = sslStatus 
    Destination = 'imap.gmail.com:993' 
    Host = 'imap.gmail.com' 
    MaxLineAction = maException 
    Port = 993 
    DefaultPort = 0 
    SSLOptions.Method = sslvSSLv23 
    SSLOptions.SSLVersions = [sslvSSLv3, sslvTLSv1] 
    SSLOptions.Mode = sslmUnassigned 
    SSLOptions.VerifyMode = [] 
    SSLOptions.VerifyDepth = 0 

object imap: TIdIMAP4 
    OnStatus = imapStatus 
    IOHandler = ssl 
    OnDisconnected = imapDisconnected 
    OnConnected = imapConnected 
    Password = 'fudbafqpmjgikxct' 
    Port = 993 
    Username = '[email protected]' 
    Host = 'imap.gmail.com' 
    UseTLS = utUseImplicitTLS 
    SASLMechanisms = <> 
    MilliSecsToWaitToClearBuffer = 10 

非常感謝任何幫助或建議

彼得

PS:這裏的imap和ssl組件的日誌

SSL Status = Resolving hostname imap.gmail.com. 
SSL Status = Connecting to 64.233.167.108. 
SSL Info = SSL status: "before/connect initialization" 
SSL Info = SSL status: "before/connect initialization" 
SSL Info = SSL status: "SSLv2/v3 write client hello A" 
SSL Info = SSL status: "SSLv3 read server hello A" 
SSL Info = SSL status: "SSLv3 read server certificate A" 
SSL Info = SSL status: "SSLv3 read server key exchange A" 
SSL Info = SSL status: "SSLv3 read server done A" 
SSL Info = SSL status: "SSLv3 write client key exchange A" 
SSL Info = SSL status: "SSLv3 write change cipher spec A" 
SSL Info = SSL status: "SSLv3 write finished A" 
SSL Info = SSL status: "SSLv3 flush data" 
SSL Info = SSL status: "SSLv3 read server session ticket A" 
SSL Info = SSL status: "SSLv3 read finished A" 
SSL Info = SSL status: "SSL negotiation finished successfully" 
SSL Info = SSL status: "SSL negotiation finished successfully" 
SSL Info = Cipher: name = ECDHE-RSA-RC4-SHA; description = ECDHE-RSA-RC4-SHA  SSLv3 Kx=ECDH  Au=RSA Enc=RC4(128) Mac=SHA1 
; bits = 128; version = TLSv1/SSLv3; 
Status = Connected. 
IMAP Connected SUCCESS 
Status = Disconnecting. 
IMAP DISCONNECTED 
Status = Disconnected. 

這裏完整的單位代碼:

unit Unit1; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdComponent, IdIOHandler, 

    IdException, 

    IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdIMAP4, IdMessage, 
    IdBaseComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, 
    IdMessageClient, Vcl.StdCtrls; 

type 
    TForm1 = class(TForm) 
    mess: TIdMessage; 
    imap: TIdIMAP4; 
    ssl: TIdSSLIOHandlerSocketOpenSSL; 
    mLog: TMemo; 
    Button1: TButton; 
    lbFolder: TListBox; 
    Button2: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure imapConnected(Sender: TObject); 
    procedure imapDisconnected(Sender: TObject); 
    procedure imapStatus(ASender: TObject; const AStatus: TIdStatus; 
     const AStatusText: string); 
    procedure sslStatus(ASender: TObject; const AStatus: TIdStatus; 
     const AStatusText: string); 
    procedure sslStatusInfo(const AMsg: string); 
    procedure Button2Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
var i: Integer; 
    sender_mail, sender_name, uid : string; 
begin 
imap.Connect(); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
imap.ListMailBoxes(lbFolder.Items); 
end; 

procedure TForm1.imapConnected(Sender: TObject); 
begin 
mLog.Lines.Add('IMAP Connected SUCCESS'); 
end; 

procedure TForm1.imapDisconnected(Sender: TObject); 
begin 
mLog.Lines.Add('IMAP DISCONNECTED'); 
end; 

procedure TForm1.imapStatus(ASender: TObject; const AStatus: TIdStatus; 
    const AStatusText: string); 
begin 
mLog.Lines.Add('Status = ' + AStatusText); 
end; 

procedure TForm1.sslStatus(ASender: TObject; const AStatus: TIdStatus; 
    const AStatusText: string); 
begin 
mLog.Lines.Add('SSL Status = ' + AStatusText); 
end; 

procedure TForm1.sslStatusInfo(const AMsg: string); 
begin 
mLog.Lines.Add('SSL Info = ' + AMsg); 
end; 

end. 
+1

您的問題需要包括代碼*這裏*,而不是在一個非現場的位置(並且當然不是在我們必須先下載之前使用它的文件的現場)。 – 2015-02-09 13:54:14

+0

對不起,插入zip文件上傳不工作。 – eustachio 2015-02-09 15:19:52

+0

沒錯。我沒有說「包括你的zip文件的上傳」。我說「包含**代碼**」。這不僅僅是'imap.Connect()';有'TIdIMAP4'和'TIdSSLLIOHandlerSocketOpenSSL'組件設置的所有配置屬性。 – 2015-02-09 15:21:09

回答

-1

我用這麼多時間,這個IMAP連接,試圖與其他組件, 並在結束..再次複查,連接憑據是錯(一個字符錯誤)。現在它的工作。 很多抱歉打擾 彼得