2011-03-31 93 views
0

我有下面的代码邮箱内的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中提取JUST邮箱(而不是公共文件夹等),以及它们的子序列收件箱和发送的项目文件夹。有任何想法吗?

回答

7

在Outlook文件夹中可以键入并具有DefaultItemType属性。与

if (mailbox.Item[i].DefaultItemType = olMailItem) then 

更换

if Pos('MAILBOX', UpperCase(mailbox.Item[i].Name)) > 0 then 

应该给你,默认情况下只存储邮件消息的文件夹。

Mail邮件当然可以存储在非类型化的文件夹为好,但作为olMailItem具有

olMailItem = $00000000; 

为它的价值,它是所有无类型文件夹的默认为好。所以基本上所有的无类型文件夹默认存储邮件项目。