You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:55:26