使用 Delphi/Indy 标记和删除 GMail 消息



如何使用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,并考虑此列表。

最新更新