Ver Mensaje Individual
  #1  
Antiguo 10-02-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Reputación: 21
Enan0 Va por buen camino
Imap de indy + gmail

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;

Última edición por Neftali [Germán.Estévez] fecha: 10-02-2010 a las 11:46:17. Razón: Corregidas etiquetas y espaciado
Responder Con Cita