Compartilhar via


Manipular notificações do repositório de mensagens

Aplica-se a: Outlook 2013 | Outlook 2016

Para se registrar em notificações do repositório de mensagens, chame o método IMAPISession::Advise ou IMsgStore::Advise e especifique um repositório de mensagens, pasta ou identificador de entrada de mensagem no conteúdo do parâmetro lpEntryID . Os provedores do repositório de mensagens dão suporte a notificações de objeto e tabela. Se você se registra com objetos específicos do repositório de mensagens, com a hierarquia de pastas e tabelas de conteúdo que descrevem esses objetos ou com objetos e tabelas depende das notificações que você espera ver, das chamadas que você faz para executar operações e de como o provedor do repositório de mensagens dá suporte à notificação.

Como o MAPI permite flexibilidade na forma como os provedores dão suporte a notificações, saiba que nem sempre você receberá o mesmo tipo de notificação em resposta a um evento específico de todos os provedores do repositório de mensagens. Alguns provedores do repositório de mensagens não dão suporte a notificações. Para determinar se o repositório de mensagens que você está usando dá suporte à notificação, procure a STORE_NOTIFY_OK bit em sua propriedade PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask).

Em uma extremidade do espectro de provedores de repositório de mensagens que dão suporte à notificação estão os provedores que geram notificações "ricas"; esses provedores enviam notificações descritivas para todas as fontes de consultoria registradas. Na outra extremidade estão os provedores do repositório de mensagens que dão suporte a notificações limitadas; esses provedores enviam notificações gerais para um número restrito de fontes de aconselhamento.

Por exemplo, se você copiar uma mensagem para uma pasta com a qual se registrou para receber notificações copiadas e movidas por objeto, poderá ou não receber a notificação copiada pelo objeto. Se você recebe ou não depende de:

  • O método que você chamou para executar a cópia. Isso pode ser IMAPIFolder::CopyMessages, IMAPIProp::CopyTo ou IMAPIProp::CopyProps.

  • Como o provedor do repositório de mensagens implementa o método de cópia.

  • Se o provedor do repositório de mensagens dá suporte ou não a notificações copiadas por objeto em pastas.

Como não há diretrizes estritas que descrevem como implementar a notificação de eventos para provedores de armazenamento de mensagens, os clientes não podem esperar um comportamento consistente. O MAPI faz recomendações sobre como os provedores do repositório de mensagens implementam a notificação de eventos e a tabela a seguir descreve essas recomendações. Leia a tabela da seguinte maneira: depois de executar a operação na primeira coluna, espere receber uma notificação do tipo listado na segunda coluna se você tiver registrado para esse tipo com o objeto listado na terceira coluna. Por exemplo, depois de criar uma pasta, você receberá uma notificação fnevObjectCreated somente se tiver registrado para notificações fnevObjectCreated com o repositório de mensagens.

Operação Tipo de evento Aconselhar fonte
Criar uma pasta
fnevObjectCreated
Repositório de mensagens
Excluir uma pasta
fnevObjectDeleted
Pasta excluída do repositório de mensagens
Mover uma pasta de uma pasta para outra
fnevObjectMoved
Pasta movida do repositório de mensagens
Copiar uma pasta de uma pasta para outra
fnevObjectCopied
Armazenamento de mensagens e pasta copiada (nenhuma notificação fnevObjectCreated enviada para a nova cópia da pasta)
Alteração em uma propriedade de pasta computada (PR_SUBFOLDERS (PidTagSubfolders), PR_CONTENT_UNREAD (PidTagContentUnreadCount), PR_CONTENT_COUNT (PidTagContentCount)
fnevObjectModified
Pasta alterada do repositório de mensagens (nenhuma notificação à pasta pai)
Criar uma mensagem
fnevObjectCreated
Repositório de mensagens
Excluir uma mensagem, causando uma alteração na propriedade PR_CONTENT_COUNT da pasta pai
fnevObjectDeleted
Mensagem excluída do repositório de mensagens
Mover uma mensagem de uma pasta para outra
fnevObjectMoved
Mensagem movida do repositório de mensagens
Copiar uma mensagem de uma pasta para outra
fnevObjectCopied
Mensagem copiada do repositório de mensagens (Notificação fnevObjectCreated para nova cópia da mensagem)
Salvar uma mensagem, causando uma alteração na propriedade PR_CONTENT_COUNT da pasta pai
fnevObjectCreated
Repositório de mensagens somente na primeira salvação
Salvar uma mensagem
fnevObjectModified
Armazenamento de mensagens em salvamentos após a primeira mensagem salvar Alterada (nenhuma notificação para a pasta pai)
Concluir uma operação de pesquisa
fnevSearchComplete
Pasta Pesquisa do repositório de mensagens
Nova mensagem
fnevNewMail
Repositório de mensagens

Observação

Ao receber uma notificação modificada por objeto, lembre-se de que a parte da matriz de marca de propriedade da estrutura OBJECT_NOTIFICATION apontada pelo parâmetro lpNotifications na chamada OnNotify pode ou não ser NULL. Os provedores do repositório de mensagens não são necessários para inserir informações de propriedade nesta matriz e a maioria não. Verifique se o método OnNotify pode lidar com o caso em que o ponteiro lpPropTagArray é NULL.

Para a maioria, se não todas as notificações de objeto, atualize a exibição da pasta ou pastas afetadas.