1

我有一个正在运行的代码,可以用来阅读电子邮件正文。问题是我想移动我阅读的邮件。例如,我在收件箱中阅读了邮件,并且想将其移动到 Outlook 中的另一个文件夹。在 searchin 之后,我可以使用 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;
4

1 回答 1

0

您的代码正在减少中的消息数。从倒计时到 1 循环:

for ii := deger downto 1 do begin

我不确定你为什么在循环中重新打开消息。绝对没有理由这样做。避免在代码中使用多个点表示法也是一个好主意。

于 2014-06-29T02:51:39.850 回答