Hola gente. bueno estoy intentado conectarme a Gmail Usando Imap y controles indy 10 en este caso. pero siempre obtengo Read timeout.
con indy 9 funciona bien, pero me da problemas con algunos correos (el mime no esta correcto).
alguna idea?
gracias
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
Mails:TStringList;
child:TTreeNode;
s:string;
begin
if IdIMAP41.Connected then begin
IdIMAP41.Disconnect;
exit;
end;
IdIMAP41.Host:=Trim(Edit1.Text);
IdIMAP41.Port:=StrToInt(trim(Edit4.Text));
IdIMAP41.Username:=Trim(Edit2.text);
IdIMAP41.Password:=trim(Edit3.text);
IdIMAP41.AuthType:= atUserPass;
IdIMAP41.Password:=trim(Edit3.text);
ssl.ConnectTimeout:=3500; ssl.Open; ssl.StartSSL;
ssl.PassThrough:=true;
ssl.SSLOptions.Mode:=sslmUnassigned;
ssl.SSLOptions.Method:=sslvSSLv2;
IdIMAP41.IOHandler :=ssl;
Label1.Caption:='connecting';
IdIMAP41.ConnectTimeout:=3500;
idimap41.ReadTimeout:=3500;
IdIMAP41.Connect;
Label1.Caption:='connected';
Mails:=TStringList.Create;
if IdIMAP41.ListMailBoxes(mails) then
for n:=0 To mails.Count -1 do begin
s:=Mails.Strings[n];
if s[1]<>'['then begin
IdIMAP41.SelectMailBox(Mails.Strings[n]);
IdMailBox1 := IdIMAP41.MailBox;
if UpperCase(IdMailBox1.Name) ='INBOX' then
Child:=TreeView1.Items.AddFirst(nil,IdMailBox1.Name +'('+ inttostr(IdMailBox1.TotalMsgs)+')')
else
Child:=TreeView1.Items.Add(nil,IdMailBox1.Name +'('+ inttostr(IdMailBox1.TotalMsgs)+')');
for i:=1 to IdMailBox1.TotalMsgs do begin
IdIMAP41.RetrieveHeader(i,IdMessage1);
TreeView1.Items.AddChild(child, 'ID('+Inttostr(i)+') - SUBJECT :' +IdMessage1.Subject);
end;
end;
end;
Try
IdIMAP41.Disconnect;
Except
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SSL:=TIdSSLIOHandlerSocketOpenSSL.Create(self);
IdMessage1:=TIdMessage.Create(self);
IdIMAP41:= TIdIMAP4.Create(self);
IdAntiFreeze1:=TIdAntiFreeze.Create(self);
IdAntiFreeze1.Active:=true;
IdIMAP41.ConnectTimeout:=3500;
IdIMAP41.IOHandler:=SSL;
IdMailBox1:= TIdMailBox.Create(self);
end;