Desenvolver um provedor do repositório de mensagens MAPI
Aplica-se a: Outlook 2013 | Outlook 2016
Assim como outros provedores de serviços MAPI, os repositórios de mensagens são DLLs (bibliotecas de link dinâmico) que apresentam os serviços de um mecanismo de armazenamento subjacente para aplicativos cliente MAPI e o spooler MAPI. O provedor do repositório de mensagens apresenta o mecanismo de armazenamento subjacente como um conjunto hierárquico de pastas e mensagens que os clientes MAPI e o spooler MAPI podem usar.
A ilustração a seguir mostra a arquitetura básica do repositório de mensagens MAPI.
Message store architecture
Você pode implementar um provedor de armazenamento de mensagens usando qualquer tipo de mecanismo de armazenamento subjacente que desejar. No entanto, você precisa estar ciente das preocupações de desempenho. Além disso, o mecanismo de armazenamento subjacente deve ser apresentado como uma coleção hierárquica de objetos MAPI. Esses requisitos significam que os armazenamentos de mensagens normalmente são implementados usando um produto de banco de dados existente que dá suporte ao armazenamento hierárquico de objetos no banco de dados e que tem uma interface de programação ou uma estrutura de arquivo bem definida. Por exemplo, os bancos de dados Microsoft Office Access, SQL e Oracle podem ser usados como o mecanismo de armazenamento subjacente. Alguns produtos de banco de dados têm conjuntos de recursos que facilitam a implementação de recursos MAPI, portanto, sua escolha do produto de banco de dados pode ser afetada pelos recursos que o provedor do repositório de mensagens precisa dar suporte.
Usar um banco de dados existente como o mecanismo de armazenamento subjacente salva seu trabalho porque geralmente é mais fácil apresentar objetos de banco de dados a clientes MAPI como objetos MAPI do que implementar seu próprio mecanismo de armazenamento hierárquico. Fazer isso permite tratar as operações MAPI em um nível mais alto do que se você implementar seu próprio mecanismo de armazenamento hierárquico. Por exemplo, procurar uma mensagem com uma determinada linha de assunto torna-se uma questão bastante simples de construir e enviar uma consulta de banco de dados apropriada, em vez de implementar rotinas complexas para pesquisar seu mecanismo de armazenamento hierárquico.
Os provedores do repositório de mensagens se comunicam com clientes MAPI e o spooler MAPI para executar operações em pastas e objetos. O provedor do repositório de mensagens converte essas operações em operações de nível inferior no mecanismo de armazenamento subjacente. O spooler MAPI normalmente se comunica com o provedor do repositório de mensagens ao enviar e receber mensagens. Os clientes MAPI normalmente se comunicam com provedores de armazenamento de mensagens para manipular a hierarquia de pastas e ler, editar, excluir e enviar mensagens.
Os clientes MAPI e MAPI se comunicam com o provedor do repositório de mensagens para criar novas mensagens. Os aplicativos cliente fazem isso quando os usuários compõem uma mensagem. O spooler MAPI faz isso quando recebe uma mensagem de entrada. Em ambos os casos, a nova mensagem geralmente é criada na pasta Caixa de Entrada do repositório de mensagens, se houver uma.
Os provedores do repositório de mensagens usam pesadamente tabelas mapi, pastas, mensagens e propriedades. Os detalhes de implementação desses objetos são documentados em Tabelas MAPI, Pastas MAPI, Mensagens MAPI e Visão geral da propriedade MAPI. Você deve se familiarizar com esse material antes de tentar implementar um provedor de armazenamento de mensagens.
Há dois tipos importantes de provedores de armazenamento de mensagens: aqueles que podem atuar como o repositório de mensagens padrão de um usuário e aqueles que não podem. Um repositório de mensagens padrão é aquele em que aplicativos cliente e o spooler MAPI podem executar qualquer tarefa de mensagens, como receber mensagens ou criar pastas. Um provedor de armazenamento de mensagens padrão deve dar suporte a vários recursos a mais do que o número mínimo necessário para todos os provedores do repositório de mensagens.