如何在Delphi程序中读取Outlook特定文件夹中的邮件?
Delphi访问Outlook多层级文件夹邮件主题的问题
我使用Outlook作为邮件客户端,希望通过Delphi程序访问其邮件信息,需要获取位于Outlook根目录下多层级特定文件夹(Outlook\Archive\Shopping)中所有邮件的主题。目前能列出收件箱的邮件,但无法访问其他文件夹,现有代码如下:
procedure TForm1.BtnListMailItemsClick(Sender: TObject); var Outlook, NameSpace, MailRoot, Mail: OleVariant; I: Integer; begin Outlook := CreateOleObject('Outlook.Application'); try NameSpace := outlook.GetNameSpace('MAPI'); MailRoot := NameSpace.GetDefaultFolder(olFolderInbox); for I := 1 to MailRoot.Items.Count do begin Mail := MailRoot.Items(I); if (Mail.class = olMail) then Memo1.Lines.Add(Mail.Subject); end; finally Outlook := UnAssigned; end; end;
我猜测需要替换代码中的
MailRoot := NameSpace.GetDefaultFolder(olFolderInbox);
为类似
MailRoot := NameSpace.GetFolder('Outlook\Archive\Shopping');
的语句,但正确语法是什么?
补充说明
我尝试了以下代码:
MailRoot := NameSpace.GetDefaultFolder(olFolderInbox); MyFolder := MailRoot.Folders.Item('Archive').Folders.Item('Shopping'); Memo1.Lines.Add('Folder name is "' + MyFolder.Name + '"'); MyFolder := MailRoot.Folders['Archive'].Folders['Shopping']; Memo1.Lines.Add('Folder name is "' + MyFolder.Name + '"');
两种赋值方式均报错:An object could not be found。我还尝试添加顶层路径:
MyFolder := MailRoot.Folders['Outlook'].Folders['Archive'].Folders['Shopping'];
但依旧无效(该文件夹确实存在)。
内容的提问来源于stack exchange,提问作者stevenvh
相关产品推荐
相关产品推荐

