delphi - 使用 Indy 检查未读消息

标签 delphi gmail pop3 indy indy10

我只是为了好玩而在 Delphi 中做一个未读消息检查器应用程序。我正在使用 Indy 10。我可以连接 Gmail 并检索所有邮件,但我在这里遇到一个问题:我无法判断邮件是否已读。 TidMessage 组件中有一个 flag 属性,可以告诉我消息是否已被读取。 代码如下所示:

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;

在测试邮箱中,有一封未读邮件,但所有检索到的邮件的 flags 枚举属性均为空,因此结果始终为 0。我是否做错了什么?是 Indy/Gmail 兼容性问题吗?

谢谢。

编辑:我肯定做错了什么,因为使用 Hotmail 帐户进行测试显示了相同的空标志属性问题。

最佳答案

POP3协议(protocol)不支持服务器上的消息状态信息,例如已读、已答复或已删除。尝试使用IMAP for Gmail相反。

关于delphi - 使用 Indy 检查未读消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558348/

相关文章:

SQL Delphi "Parameter ' 未找到主题“

multithreading - Delphi多线程程序中奇怪的0x0eedfade异常

delphi - 这个符号是什么意思: ∧?

android - 用于从 Android 上的 gmail 应用程序下载附件的 Intent 过滤器

JavaMail : Folder. hasNewMessages() 和 .getMessageCount() 似乎无法正常工作

c# - 使用 POP3 连接到 SSL

PHP imap_open 失败,但 OpenSSL 连接

delphi - 如何在TWebbrowser中获取JS脚本控制台输出?

php - 是什么让 PHP 的 mail() 函数如此缓慢?

gmail - 如何从 Gmail 下载所有带有附件的电子邮件?