Ver Mensaje Individual
  #12  
Antiguo 05-05-2016
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Reputación: 18
juanelo Va por buen camino
Mira y aunque no lo creas (bueno si lo creerás porque te esta pasando) me pasa exactamente lo mismo, aunque en mi caso no es siempre, y no he logrado detectar las circunstancias que ocasionan el error.
Pero como tu, ya me tenia loco y habia que dar una solucion al problema (al cliente), y esto es lo que hice, nada elegante ni soluciona el problema, pero si que funciona.
Código Delphi [-]
....
// Conectamos con el servidor SMTP
  while(Intento < 2)
  {

    try
    {
      try
      {
        Application->ProcessMessages();
        if(Barra != NULL)
          Barra->Panels->Items[0]->Text="Conectando ... ";

          if(UsaSTARTTLS)
            SMTP->Connect(IdTimeoutDefault);
          else
            SMTP->Connect();
            
          if(UsaSTARTTLS && SMTP->SendCmd("STARTTLS", 220) == 220)// se coloca PassThrough a false
            SSL->PassThrough = false;
            
          if(SMTP->Connected())
          {
            Application->ProcessMessages();

            if(UsaSTARTTLS)
              SMTP->Authenticate();
            if(Barra != NULL)
              Barra->Panels->Items[0]->Text="Enviando correo ... ";
                SMTP->Send(Mensaje);
            Application->ProcessMessages();
            if(Barra != NULL)
              Barra->Panels->Items[0]->Text="Desconectando ... ";
                SMTP->Disconnect();
            Application->ProcessMessages();
            if(Barra != NULL)
              Barra->Panels->Items[0]->Text="Correo Enviado ... ";

                if(EsFactura || EsCPRN)
                  MarcaFacturaEnviadaPorMail(CveDocto,EnviaXML,-1,TipoDoc);
          }
          Intento=2;
          PuedeCerrar=true;
      }
      catch(Exception &e)
      {
        Que=false;
        if(e.Message.AnsiPos("load") == 0)  // Por error de Indy
        {
          Intento=2;
          Application->ProcessMessages();
          Que=false;
          if(Barra != NULL)
           Barra->Panels->Items[0]->Text="Error en el envio";
          Application->MessageBox(e.Message.c_str(),"Error",MB_OK);
        }
        else
          Intento++;

        PuedeCerrar=false;
      }
    }
    __finally
    {
      if(SMTP->Connected())
        SMTP->Disconnect();       
      }   
    }
  }

Basicamente lo que se hace es cachar el error de "Load ..." e intentar nuevamente, lo que me di cuenta es que solo una vez lanza ese error, las siguientes no lo hace (si no cierras la aplicacion).
Espero te ayude al menos a darle solucion al cliente, ya luego veremos de que se trata.

NOTA: mi proyecto es tambien BCB6 pero con Indy 9.0.14
__________________
Ya tengo Firma!
Responder Con Cita