Pregunta

Me estoy haciendo sólo por diversión una aplicación de mensajes sin leer corrector en Delphi. Estoy usando Indy 10. Me puede conectar con Gmail y puedo recuperar todos los mensajes, pero estoy frente a un problema aquí: No puedo saber si un mensaje ya se leyó o no. Hay una propiedad de la bandera en el componente TidMessage que me debe decir si el mensaje ha sido leído. Los código es el siguiente:

procedure TForm1.btTestConnectionClick(Sender: TObject);
var
 i: Integer;
 count: Integer;
 flag: TIdMessageFlags;
begin
 if (pop3Test.Connected) then begin
  pop3Test.Disconnect;
 end;

 pop3Test.Username := edAccount.Text;
 pop3Test.Password := edPassword.Text;
 pop3Test.Host := HOST;
 pop3Test.AuthType := patUserPass;
 pop3Test.Port := PORT;
 pop3Test.Connect;
 Count := 0;
 for i := pop3Test.CheckMessages downto 1 do begin
      pop3Test.Retrieve(i, IdMessage1);
      if (mfSeen in IdMessage1.Flags) then begin
       Count := Count + 1;
      end;
 end;


 ShowMessage(IntToStr(Count));
 pop3Test.Disconnect;
end;

En el buzón de prueba hay un mensaje no leído, pero todos los mensajes recuperados han vaciar las banderas de enumeración propiedad por lo que el resultado es siempre 0. estoy haciendo algo mal? ¿Es un problema de la compatibilidad de Indy / Gmail?

Gracias.

EDIT:. Definitivamente estoy haciendo algo mal como la prueba con una cuenta de Hotmail muestra el mismo problema de la propiedad-banderas vacías

¿Fue útil?

Otros consejos

La forma mejor (y más rápida) para encontrar esta respuesta sería la de buscar el código fuente de Indy "mfSeen" debería buscar que sólo se utiliza en idIMAP * unidades. RRUZ es correcta - POP3 no ofrece esta capacidad inherente. En POP3 que necesita para realizar un seguimiento de esto en el lado del cliente. Esta bandera se añadió a IdMessage para los propósitos IMAP, y no necesariamente para POP3.

TIdMessageFlags debe probablemente han sido nombrados TIdIMAPMessageFlags

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top