Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Error al leer un Correo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Error al leer un Correo Responder citando

Buen día,

trabajo bajo BCB6 y uso los componentes Indy standard para enviar y recidir correo; pero al querer recibir , en la linea:

Código:
IdPOP31->Retrieve(i,IdMessage2);

Me envía el siguiente error:

EConvertError with Message 'Invalid Argument to date encode'

por lo que supongo y leo, es un error de le Fecha Hora, checo en el servidor como viene la fecha hora y viene de esta forma:

correos de la semana actual salen como : Wed 10:25 (como ejemplo)

y de semanas anteriores el formato es: 21.08.2009 11:02 (dd.mm.yyyy hh:mm)

No sé como solucionarlo.

Alguna ayuda?

Gracias de antemano.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Probablemente es porque la fecha no viene en el formato estándar utilizado por POP3. Poniendo el siguiente código en cualquier parte del programa puedes interceptar el momento antes de convertir la fecha y ver en que formato viene. También podrías usarlo para añadir tu propio código de conversión (al usar este código se pierde la rutina original de conversión):
Código:
namespace Idglobal {
    System::TDateTime __fastcall GMTToLocalDateTime(AnsiString S)
    {
        ShowMessage(S);
        // Una función que puede serte útil aquí una vez corrijas
        // el formato de entrada es: "StrInternetToDateTime"
        return 0;
    }
}
(Esto solo funciona si tenemos enlazados estáticamente los packages con el ejecutable. O sea:
Ir al menú: Project -> Options... Dentro de ese dialogo ir a la pestaña: "Packages". Y dentro de esa pestaña desmarcar el Checkbox: "Build with runtime packages")


En el siguiente enlace tienes el formato que deberían tener las fechas:
http://www.faqs.org/rfcs/rfc2822.html
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Modificandolo un poco para no perder la rutina original de conversión:
Código:
namespace Idglobalprotocols {  // En Indy10 cambiar "Idglobal" por "Idglobalprotocols"
   System::TDateTime __fastcall GMTToLocalDateTime(String S)
   {
      // Podemos ver el formato original en que viene
      // la fecha en "S" y modificarla si es necesario
      //...

      TDateTime result = StrInternetToDateTime(S);
      TDateTime offset = (S.Length() < 5) ? 0.0 : GmtOffsetStrToDateTime(S);

      if (static_cast<double>(offset) < 0.0)
         result += abs(offset);
      else
         result -= offset;

      return result + OffsetFromUTC();
   }
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias _Leo... lo pondré en práctica.

Y perdón por responder hasta ahora, pero se presentaron urgencias.

Saludos.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.