Abrir uma pasta do repositório de mensagens

Aplica-se a: Outlook 2013 | Outlook 2016

Antes que qualquer pasta possa ser aberta, seu identificador de entrada deve estar disponível. Para a maioria das pastas, isso significa recuperar suas propriedades PR_ENTRYID . Para pastas especiais, como algumas das pastas de subárvore IPM e outras pastas raiz, o MAPI define propriedades de identificador de entrada especiais que são acessíveis chamando o método IMAPIProp::GetProps do repositório de mensagens. Esses identificadores de entrada são sempre de longo prazo e são nomeados da seguinte maneira:

Folder Propriedade do identificador de entrada
Pasta caixa de saída
PR_IPM_OUTBOX_ENTRYID (PidTagIpmOutboxEntryId) (apenas classe de mensagem IPM)
pasta Itens Excluídos
PR_IPM_WASTEBASKET_ENTRYID (PidTagIpmWastebasketEntryId)
pasta Itens Enviados
PR_IPM_SENTMAIL_ENTRYID (PidTagIpmSentMailEntryId)
pasta raiz IPM
PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId)
Pasta raiz de resultados da pesquisa
PR_FINDER_ENTRYID (PidTagFinderEntryId)
Pasta raiz de exibições comuns
PR_COMMON_VIEWS_ENTRYID (PidTagCommonViewsEntryId)
Pasta raiz de exibições pessoais
PR_VIEWS_ENTRYID (PidTagViewsEntryId)
Pasta raiz dos contatos
PR_IPM_CONTACT_ENTRYID (PidTagIpmContactEntryId)
Pasta raiz de rascunhos
PR_IPM_DRAFTS_ENTRYID (PidTagIpmDraftsEntryId)
Pasta raiz do diário
PR_IPM_JOURNAL_ENTRYID (PidTagIpmJournalEntryId)
Pasta raiz do Calendar
PR_IPM_APPOINTMENT_ENTRYID (PidTagIpmAppointmentEntryId)
Pasta raiz do Notes
PR_IPM_NOTE_ENTRYID (PidTagIpmNoteEntryId)
Pasta raiz de tarefas
PR_IPM_TASK_ENTRYID (PidTagIpmTaskEntryId)

Antes de tentar recuperar um desses identificadores de entrada especiais, recupere a propriedade PR_VALID_FOLDER_MASK (PidTagValidFolderMask) do repositório de mensagens. PR_VALID_FOLDER_MASK é uma máscara de bits que identifica quais dos identificadores de entrada especiais existem. Há um bit para cada uma das pastas especiais. Se o bit estiver definido, isso indica que a pasta correspondente é compatível e tem um identificador de entrada válido. Por exemplo, se a pasta Itens Excluídos existir e tiver um identificador de entrada válido, o bit de FOLDER_IPM_WASTEBASKET_VALID será definido em PR_VALID_FOLDER_MASK.

Abra a pasta onde todas as mensagens de entrada de uma determinada classe são colocadas

  1. Chame IMsgStore::GetReceiveFolder para recuperar seu identificador de entrada, definindo o parâmetro lpszMessageClass para apontar para uma cadeia de caracteres que identifica a classe de mensagem. Por exemplo, se você quiser abrir a Caixa de Entrada da subárvore IPM, aponte lpszMessageClass para IPM. Se você quiser abrir a pasta de recebimento de mensagens IPC, defina-a para apontar para IPC.

    Se não houver nenhuma pasta de recebimento registrada para a classe de mensagem, GetReceiveFolder escolherá a pasta de recebimento cuja classe de mensagem associada corresponde ao prefixo mais longo possível da classe de mensagem passada. Para obter mais informações, consulte Pastas de Recebimento MAPI.

    Observe que a propriedade PR_IPM_OUTBOX_ENTRYID é usada para abrir a pasta Caixa de Saída somente para mensagens IPM. Se você estiver abrindo a Caixa de saída para mensagens IPC, use o identificador de entrada para sua pasta de recebimento. As mensagens IPC de entrada e saída são colocadas na pasta de recebimento.

  2. Chame um dos quatro métodos OpenEntry para abrir a pasta e retornar um ponteiro de interface que você pode usar para acessá-la. Você pode chamar qualquer um dos seguintes métodos para abrir uma pasta:

    O método específico escolhido depende da pasta a ser aberta e dos objetos que estão disponíveis no momento. Como o método IMAPISession pode abrir qualquer pasta para qualquer repositório de mensagens no perfil atual, chame-o de OpenEntry quando você não souber nada sobre a pasta a ser aberta. Se você souber qual repositório de mensagens possui a pasta e tiver um ponteiro para o repositório de mensagens, chame IMsgStore::OpenEntry.

    Por exemplo, use o método IMsgStore para abrir uma pasta de recebimento. Se você tiver um ponteiro para o objeto de logon do provedor de repositório de mensagens, chame IMSLogon::OpenEntry. Como essas chamadas vão diretamente para o provedor do repositório de mensagens e não por meio do MAPI, o processamento é mais rápido. Se a pasta que você está abrindo for uma subpasta de uma pasta que você já tem aberta, chame o método IMAPIContainer::OpenEntry da pasta aberta. O método IMAPIContainer abre apenas subpastas de uma pasta aberta no momento e é o único método garantido para funcionar com identificadores de entrada de curto prazo.

  3. Se você quiser fazer alterações na pasta a ser aberta, especifique um nível de acesso definindo o sinalizador MAPI_BEST_ACCESS ou MAPI_MODIFY na chamada OpenEntry . Esses sinalizadores são sugestões para o provedor de repositório de mensagens conceder o nível mais alto de acesso, para MAPI_BEST_ACCESS, ou acesso de leitura/gravação, para MAPI_MODIFY, ao abrir a pasta.

    Como esses sinalizadores são apenas sugestões, a pasta pode ou não ser aberta com o nível de acesso esperado. Recuperando a propriedade PR_ACCESS (PidTagAccess), você pode determinar o intervalo de operações que podem ser executadas na pasta aberta.

    No entanto, como muitos provedores de repositório de mensagens calculam o valor dessa propriedade sob demanda em vez de dar suporte a ela como uma propriedade de pasta ou como uma coluna em sua tabela de hierarquia, recuperá-la pode ser demorado. Uma estratégia alternativa é tentar qualquer operação que você precise executar e retornar um erro, se necessário.

Confira também