如何使用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帐户中设置特殊设置?
更新:现在可以删除,但是标记仍未设置。删除显示了一些延迟,但标记仍然存在...
找到了解决方案:我的不耐烦引起了它。
最多需要几分钟的时间,标志更改才会反映在GMail中。在构建每30秒运行一次的转发器时,我将存储最近一小时左右看到的消息的UID,并将此列表也考虑在内。