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 subtree do IPM e outras pastas raiz, o MAPI define propriedades especiais do identificador de entrada 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 identificador de entrada |
---|---|
Pasta outbox |
PR_IPM_OUTBOX_ENTRYID (PidTagIpmOutboxEntryId) (somente 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 de 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 contatos |
PR_IPM_CONTACT_ENTRYID (PidTagIpmContactEntryId) |
Pasta raiz rascunhos |
PR_IPM_DRAFTS_ENTRYID (PidTagIpmDraftsEntryId) |
Diário pasta raiz |
PR_IPM_JOURNAL_ENTRYID (PidTagIpmJournalEntryId) |
Pasta raiz do calendário |
PR_IPM_APPOINTMENT_ENTRYID (PidTagIpmAppointmentEntryId) |
Anotações pasta raiz |
PR_IPM_NOTE_ENTRYID (PidTagIpmNoteEntryId) |
Pasta raiz 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 qual dos identificadores de entrada especiais existe. Há um bit para cada uma das pastas especiais. Se o bit estiver definido, ele indicará que a pasta correspondente tem suporte 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 FOLDER_IPM_WASTEBASKET_VALID será definido em PR_VALID_FOLDER_MASK.
Abra a pasta em que todas as mensagens de entrada de uma determinada classe são colocadas
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 do subtree do IPM, aponte lpszMessageClass para IPM. Se você quiser abrir a pasta de recebimento de mensagens IPC, defina-a como ponto 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, confira Pastas de Recebimento MAPI.
Observe que a propriedade PR_IPM_OUTBOX_ENTRYID é usada para abrir a pasta Outbox somente para mensagens IPM. Se você estiver abrindo a Caixa de Saída para mensagens IPC, use em vez disso o identificador de entrada para sua pasta de recebimento. As mensagens IPC de entrada e saída são colocadas na pasta de recebimento.
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 este 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 armazenamento de mensagens, chame IMSLogon::OpenEntry. Como essas chamadas vão diretamente para o provedor do repositório de mensagens e não para o MAPI, o processamento é mais rápido. Se a pasta que você está abrindo for uma subpasta de uma pasta que você já abriu, chame o método IMAPIContainer::OpenEntry da pasta aberta. O método IMAPIContainer só abre subpastas de uma pasta aberta no momento e é o único método garantido para trabalhar com identificadores de entrada de curto prazo.
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 ao provedor do repositório de mensagens para 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. Ao recuperar 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 armazenamento 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 demorada. Uma estratégia alternativa é tentar qualquer operação necessária para executar e retornar um erro, se necessário.