0

私は、次のコードを含む 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 では動作しません。これは、メールボックスに「Mailbox」という単語が含まれていないためです。したがって、私は、Outlook 内からメールボックス (パブリック フォルダーなどではない) だけを抽出し、そのサブシーケンスの受信トレイと送信済みアイテム フォルダーを抽出する別の方法を求めています。何か案は?

4

1 に答える 1

7

Outlook では、フォルダーを入力して、DefaultItemType プロパティを設定できます。交換する

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

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

デフォルトでメールメッセージのみを保存するフォルダーを提供する必要があります。

もちろん、メール メッセージは型指定されていないフォルダにも格納できますが、olMailItem のように

olMailItem = $00000000;

その値として、これはすべてのタイプ指定されていないフォルダーのデフォルトでもあります。そのため、基本的に、デフォルトではタイプ指定されていないフォルダにメール アイテムが保存されます。

于 2011-03-31T10:54:33.467 に答える