我有一个 Delphi 2006 BDS 应用程序,其中包含以下代码来迭代 Outlook 邮箱,然后是邮箱中的收件箱和已发送邮件:
try
nameSpace := outlook.GetNameSpace('MAPI');
// load the mailboxes
mailbox := NameSpace.Folders;
for i := 1 to mailbox.Count do
if Pos('MAILBOX', UpperCase(mailbox.Item[i].Name)) > 0 then
begin
rootNode := trvwOutlookFolders.Items.AddChildObject(nil, mailbox.Item[i].Name, nil);
for j := 1 to mailbox.Item[i].Folders.Count do
if (Pos('INBOX', UpperCase(mailbox.Item[i].Folders[j].Name)) > 0) or
(Pos('SENT ITEMS', UpperCase(mailbox.Item[i].Folders[j].Name)) > 0) then
begin
// do processing
end;
end;
finally
outlook := Unassigned;
end;
end;
该代码在 Outlook 2007 下运行良好,但在 2010 年无法正常运行,因为邮箱不包含“邮箱”一词。因此,我寻求一种从 Outlook 及其子序列收件箱和已发送项目文件夹中提取邮箱(不是公用文件夹等)的替代方法。有任何想法吗?