我有一个正在运行的代码,我可以使用它来阅读电子邮件正文。问题是我想移动我读过的邮件。例如,我在收件箱中阅读邮件,我想将其移动到Outlook中的另一个文件夹。在搜索之后,我可以使用Move命令执行此操作,但我的程序会出现错误“Array out of bounds”。 例如,我在Outlook收件箱中有4封电子邮件,它只移动2个文件并出现此错误。 我的代码有什么问题?请帮忙谢谢
try
ovOutlook := CreateOleObject('Outlook.Application');
ovNameSpace := ovOutlook.GetNameSpace('MAPI');
ovNameSpace.Logon('', '', False, True);
ovFolder := ovNameSpace.GetDefaultFolder(olFolderInbox);
OtherFolder:=ovFolder.Parent.Folders('BTM');
deger:= ovFolder.items.count;
for ii := 1 to deger do begin
if VarIsNull(ovFolder.Items[ii]) or VarIsEmpty(ovFolder.Items[ii]) then Continue;
ovEmailItem := ovNameSpace.GetItemFromID(ovFolder.Items[ii].EntryID);
ovFolder.Items[ii].Move(otherfolder);
end;
finally
ovEmailItem := Unassigned;
ovOutlook := Unassigned;
ovNameSpace := Unassigned;
ovFolder := Unassigned;
OtherFolder := Unassigned;
end;
答案 0 :(得分:0)
您的代码正在减少邮件中的邮件数量。从Count循环到1:
for ii := deger downto 1 do begin
我不知道为什么你在循环中重新打开消息。绝对没有理由这样做。 在代码中避免使用多点符号也是一个好主意。