Comprobar los mensajes no leídos con Indy
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
Solución
la href="http://www.faqs.org/rfcs/rfc1939.html"> POP3
protocolo no soporta Message state information
en el servidor como lectura, respondió a, o eliminado. trate de usar IMAP for Gmail
lugar.
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