Delphi 仅从Gmail下载部分邮件头';已发送项目';使用imap
关于我关于访问Gmail中的“已发送邮件”文件夹的问题,接受答案中的代码使用UIDRetrieveAllEnvelopes下载文件夹中的所有邮件标题。下载完所有标题后,我会对其进行过滤Delphi 仅从Gmail下载部分邮件头';已发送项目';使用imap,delphi,gmail,imap,Delphi,Gmail,Imap,关于我关于访问Gmail中的“已发送邮件”文件夹的问题,接受答案中的代码使用UIDRetrieveAllEnvelopes下载文件夹中的所有邮件标题。下载完所有标题后,我会对其进行过滤 有没有办法只下载当天发送的邮件(即下载前过滤)?没有办法只检索特定文件夹中某一天的邮件 IMAP方法是缓存消息/信封,只检索最近的/新的消息。 查看TIdIMAP4.StatusMailbox和TIdIMAP4.RetrieveFlags以检查客户端新收到的消息,并仅下载这些消息/eLopes 可能的标志是
有没有办法只下载当天发送的邮件(即下载前过滤)?没有办法只检索特定文件夹中某一天的邮件 IMAP方法是缓存消息/信封,只检索最近的/新的消息。 查看
TIdIMAP4.StatusMailbox
和TIdIMAP4.RetrieveFlags
以检查客户端新收到的消息,并仅下载这些消息/eLopes
可能的标志是
TIdMessageFlags =
( mfAnswered, //Message has been answered.
mfFlagged, //Message is "flagged" for urgent/special attention.
mfDeleted, //Message is "deleted" for removal by later EXPUNGE.
mfDraft, //Message has not completed composition (marked as a draft).
mfSeen, //Message has been read.
mfRecent ); //Message is "recently" arrived in this mailbox.
我似乎找到了办法
today:= datetostr (date);
with imap do
begin
Username:= 'whatever@gmail.com';
Password:= ....;
Connect;
if SelectMailBox('[Gmail]/sent items') then
begin
i:= MailBox.TotalMsgs;
retrieve (i, email);
while datetostr (email.date) = today do
begin
lb.items.add (email.subject + ' ' + datetostr (email.date));
dec (i);
retrieve (i, email)
end
end;
Disconnect;
end;
我更喜欢用一个。我将使用
sksentstain
键将今天的日期传递到TIdIMAP4SearchRec.date
字段,而不是skBody
搜索带有Text
字段的键。@TLama+1-但这并不限于特殊的folder@TLama:搜索是正确的答案。搜索仅限于当前选定的邮箱。因此,只需选择“已发送邮件”邮箱,然后执行搜索。一些IMAP后端确实通过IMAPsearch UID
命令直接支持此操作。