使用Delphi / Indy标记和删除GMail邮件

问题描述 投票:0回答:1

如何使用Delphi 10.3.3 / stock Indy在GMail中删除和标记邮件。

以下方法不起作用(我省略了try / finally来压缩代码):

var
  imap: TIdIMAP4;
  msg: TIdMessage;
  ...
  imap := TIdIMAP4.Create(nil);
  ...
  if imap.SelectMailBox('INBOX') then
  begin
    for i := 1 to imap.MailBox.TotalMsgs do
    begin
      imap.Retrieve(i, msg);
      imap.getUID(i, UID);
      ...
      imap.UIDStoreFlags(UID, sdReplace, msg.Flags - [mfSeen]);  -> DOESNT WORK
      ...
      imap.UIDStoreFlags(UID, sdReplace, msg.Flags + [mfAnswered]);  -> DOESNT WORK
      ...
      imap.UIDDeleteMsg(UID); -> DOESNT WORK
      ...
    end;
  end;
  ...
  imap.disconnect;
  imap.free;
  ...

我是否省略了任何更新语句?还是我需要在gmail帐户中设置特殊设置?

更新:现在可以删除,但是标记仍未设置。删除显示了一些延迟,但标记仍然存在...

delphi imap indy flags
1个回答
0
投票

找到了解决方案:我的不耐烦引起了它。

最多需要几分钟的时间,标志更改才会反映在GMail中。在构建每30秒运行一次的转发器时,我将存储最近一小时左右看到的消息的UID,并将此列表也考虑在内。

© www.soinside.com 2019 - 2024. All rights reserved.