• Jueves 28 de Marzo de 2024, 22:10

Autor Tema:  Varias cuentas idpop3  (Leído 2383 veces)

vankul

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Varias cuentas idpop3
« en: Domingo 17 de Noviembre de 2013, 20:13 »
0
El siguiente código me funciona bien para una sola cuenta pero cuando hay más de una me da un error en blanco y no sé porqué:
Código: [Seleccionar]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (TreeView1->Items->Count == 0) {
  ShowMessage("No hay ninguna cuenta establecida\n"
  "pulsa sobre nueva cuenta para establecer una.");
}
else {
  String host = "";
  String userid = "";
  String pasword = "";
  int puerto = 0;
  if (lis->Count == 1) {
for (int i = 0; i < lis->Count; i++) {
host = opti->ReadString(TreeView1->Items->Item[i]->Text,"host","");
userid = opti->ReadString(TreeView1->Items->Item[i]->Text,"userid","");
pasword = opti->ReadString(TreeView1->Items->Item[i]->Text,"pasword","");
puerto = opti->ReadInteger(TreeView1->Items->Item[i]->Text,"puerto",0);
if (correu->Connected()) {
correu->Disconnect();
}
if (!correu->Connected()) {
correu->Host = host;
correu->Username = userid;
correu->Password = pasword;
correu->Port = puerto;
if (opti->ReadBool(TreeView1->Items->Item[i]->Text,"conexionsegura",false)){
correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
}
else {
correu->IOHandler = NULL;
}
correu->Connect();
Application->ProcessMessages();
int num_mensajes = correu->CheckMessages();
if (num_mensajes==0){
Label12->Font->Color = clBlack;
Label12->Caption = "No hay mensajes en "+TreeView1->Items->Item[i]->Text+".";
Label12->Visible = true;
}
else {
//ShowMessage("Hay mensajes...");
Label1->Caption = IntToStr(num_mensajes);
for (int e=1;e<=num_mensajes;e++){
mensa->Clear();
correu->RetrieveHeader(e,mensa);
TListItem *ite;
ite = lista->Items->Add();
ite->Caption = IntToStr(e);
ite->SubItems->Add(mensa->From->Address);
ite->SubItems->Add(mensa->Subject);
ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
ite->ImageIndex = 1;
ite->SubItemImages[0] = 0;
Application->ProcessMessages(); //Esta línea es clave
SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
}

}
correu->Disconnect();
}

}
   }
   else{
   //ShowMessage("has entrado en el else...");
   for (int i = 0; i < lis->Count; i++) {
host = opti->ReadString(TreeView1->Items->Item[i]->Text,"host","");
userid = opti->ReadString(TreeView1->Items->Item[i]->Text,"userid","");
pasword = opti->ReadString(TreeView1->Items->Item[i]->Text,"pasword","");
puerto = opti->ReadInteger(TreeView1->Items->Item[i]->Text,"puerto",0);
if (correu->Connected()) {
correu->Disconnect();
}
if (!correu->Connected()) {
correu->Host = host;
correu->Username = userid;
correu->Password = pasword;
correu->Port = puerto;
if (opti->ReadBool(TreeView1->Items->Item[i]->Text,"conexionsegura",false)){
correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
}
else {
correu->IOHandler = NULL;
}
correu->Connect();
Application->ProcessMessages();
int num_mensajes = correu->CheckMessages();
if (num_mensajes==0){
Label12->Font->Color = clBlack;
Label12->Caption = "No hay mensajes en "+TreeView1->Items->Item[i]->Text+".";
Label12->Visible = true;
}
else {
//ShowMessage("Hay mensajes...");
Label1->Caption = IntToStr(num_mensajes);
for (int e=1;e<=num_mensajes;e++){
mensa->Clear();
correu->RetrieveHeader(e,mensa);
TListItem *ite;
ite = lista->Items->Add();
ite->Caption = IntToStr(e);
ite->SubItems->Add(mensa->From->Address);
ite->SubItems->Add(mensa->Subject);
ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
ite->ImageIndex = 1;
ite->SubItemImages[0] = 0;
Application->ProcessMessages(); //Esta línea es clave
SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
}

}
correu->Disconnect();
}

}
   }
  }
}
//---------------------------------------------------------------------------
Agradeceré cualquier posible solución. Muchas gracias.
Utilizo C++ XE5 bajo windows7 64 bits.

vankul

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re:Varias cuentas idpop3
« Respuesta #1 en: Domingo 24 de Noviembre de 2013, 22:33 »
0
Ya lo he resuelto, pongo el código:
Código: [Seleccionar]
void __fastcall TForm1::mnuComprobarcorreoExecute(TObject *Sender)
{
   if (TreeView1->Items->Count == 0) {
     ShowMessage("No hay ninguna cuenta establecida\n"
              "pulsa sobre nueva cuenta para establecer una.");
   }
   else {
      String host = "";
      String userid = "";
      String pasword = "";
      int puerto = 0;//el if que estaba aquí sobra
      for (int i = 0; i <contes>Count; i++) {
         host = pop3->ReadString(contes->Strings[i],"host","");// y aquí sustituyendo lo que había por lo que hay
         userid = pop3->ReadString(contes->Strings[i],"userid","");
         pasword = pop3->ReadString(contes->Strings[i],"pasword","");
         puerto = pop3->ReadInteger(contes->Strings[i],"puerto",0);
         if (correu->Connected()) {
            correu->Disconnect();
         }
         if (!correu->Connected()) {
            correu->Host = host;
            correu->Username = userid;
            correu->Password = pasword;
            correu->Port = puerto;
            if (pop3->ReadBool(contes->Strings[i],"conexionsegura",false)){
               correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
            }
            else {
               correu->IOHandler = NULL;
            }
               //ShowMessage(contes->Text);
               //ShowMessage(contes->Strings[i]);
               correu->Connect();
               Application->ProcessMessages();
               int num_mensajes = correu->CheckMessages();
               if (num_mensajes==0){
                  //Label12->Font->Color = clBlack;
                  //Label12->Caption = "No hay mensajes en "+ListView4->Items->Item[y]->Caption+".";
                  //Label12->Visible = true;
               }
               else {
                  //ShowMessage("Hay mensajes...");

                  for (int e=1;e<num_mensajes>Clear();
                        correu->RetrieveHeader(e,mensa);
                        TListItem *ite;
                        ite = lista->Items->Add();
                        ite->Caption = IntToStr(e);
                        ite->SubItems->Add(mensa->From->Address);
                        ite->SubItems->Add(mensa->Subject);
                        ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
                        ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
                        ite->ImageIndex = 3;
                        ite->SubItemImages[1] = 2;
                        Application->ProcessMessages(); //Esta línea es clave
                        SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
                  }

               }
               correu->Disconnect();
         }

      }

   }
}