Compartilhar via


OpenTnefStreamEx

Aplica-se a: Outlook 2013 | Outlook 2016

Cria um objeto TNEF (formato de encapsulamento) Transport-Neutral que pode ser usado para codificar ou decodificar um objeto de mensagem em um fluxo de dados TNEF para uso por transportes ou gateways e armazenamentos de mensagens. Este é o ponto de entrada para acesso TNEF.

Propriedade Valor
Arquivo de cabeçalho:
Tnef.h
Implementado por:
MAPI
Chamado por:
Provedores de transporte
HRESULT OpenTnefStreamEx(
  LPVOID lpvSupport,
  LPSTREAM lpStream,
  LPSTR lpszStreamName,
  ULONG ulFlags,
  LPMESSAGE lpMessage,
  WORD wKeyVal,
  LPADDRESSBOOK lpAddressBook,
  LPITNEF FAR * lppTNEF
);

Parâmetros

lpvSupport

[in] Passa um objeto de suporte ou passa em NULL. Se NULL, o parâmetro lpAddressBook não será nulo.

lpStream

[in] Ponteiro para um objeto de fluxo de armazenamento, como uma interface OLE IStream , fornecendo uma origem ou destino para uma mensagem de fluxo TNEF.

lpszStreamName

[in] Ponteiro para o nome do fluxo de dados que o objeto TNEF usa. Se o chamador tiver definido o sinalizador TNEF_ENCODE ( parâmetro ulFlags ) em sua chamada para OpenTnefStream, o parâmetro lpszName deverá especificar um ponteiro não nulo para uma cadeia de caracteres não nula que consiste em qualquer caractere considerado válido para nomear um arquivo. O MAPI não permite nomes de cadeia de caracteres, incluindo os caracteres "[", "]" ou ":", mesmo que o sistema de arquivos permita seu uso. O tamanho da cadeia de caracteres passada para o parâmetro lpszName não deve exceder o valor de MAX_PATH, o comprimento máximo de uma cadeia de caracteres que contém um nome de caminho.

ulFlags

[in] Bitmask de sinalizadores usados para indicar o modo da função. Os seguintes sinalizadores podem ser definidos:

TNEF_BEST_DATA

Todas as propriedades possíveis são mapeadas em seus atributos de nível inferior, mas quando há uma possível perda de dados devido à conversão para um atributo de nível inferior, a propriedade também é codificada nos encapsulamentos. Observe que isso causará a duplicação de informações no fluxo TNEF. TNEF_BEST_DATA será o padrão se nenhum outro modo for especificado.

TNEF_COMPATIBILITY

Fornece compatibilidade com aplicativos cliente mais antigos. Os fluxos TNEF codificados com esse sinalizador mapearão todas as propriedades possíveis em seu atributo de nível inferior correspondente. Esse modo também causa o padrão de algumas propriedades que são exigidas por clientes de nível inferior.

Cuidado

Esse sinalizador é obsoleto e não deve ser usado.

TNEF_DECODE

O objeto TNEF no fluxo indicado é aberto com acesso somente leitura. O provedor de transporte deve definir esse sinalizador se a função for inicializar o objeto para decodificação subsequente.

TNEF_ENCODE

O objeto TNEF no fluxo indicado é aberto para permissão de leitura/gravação. O provedor de transporte deve definir esse sinalizador se a função for inicializar o objeto para codificação subsequente.

TNEF_PURE

Codifica todas as propriedades nos blocos de encapsulamento MAPI. Portanto, um arquivo TNEF "puro" consistirá, no máximo, nos atributos attMAPIProps, attAttachment, attRenddata e attRecipTable. Esse modo é ideal para uso quando não é necessária compatibilidade anterior.

Lpmessage

[in] Ponteiro para um objeto de mensagem como destino para uma mensagem decodificada com anexos ou uma fonte para uma mensagem codificada com anexos. Qualquer propriedade de uma mensagem de destino pode ser substituída pelas propriedades de uma mensagem codificada.

wKeyVal

[in] Uma chave de pesquisa que o objeto TNEF usa para corresponder anexos às marcas de texto inseridas no texto da mensagem. Esse valor deve ser relativamente exclusivo entre as mensagens.

lpAddressBook

[in] Ponteiro para um objeto de catálogo de endereços usado para obter informações de endereçamento para identificadores de entrada.

lppTNEF

[out] Ponteiro para o novo objeto TNEF.

Valor de retorno

S_OK

A chamada foi bem-sucedida e retornou o valor ou valores esperados.

Comentários

A função OpenTnefStreamEx é a substituição recomendada para OpenTnefStream, o ponto de entrada original para acesso TNEF.

Um objeto TNEF criado pela função OpenTnefStreamEx mais tarde chama o método OLE IUnknown::AddRef para adicionar referências para o objeto de suporte, o objeto stream e o objeto de mensagem. O provedor de transporte pode liberar as referências para todos os três objetos com uma única chamada para o método OLE IUnknown::Release no objeto TNEF.

O OpenTnefStreamEx aloca e inicializa um objeto TNEF para o provedor usar na codificação de uma mensagem MAPI em uma mensagem de fluxo TNEF. Como alternativa, essa função pode configurar o objeto para o provedor usar em chamadas subsequentes para ITnef::ExtractProps para decodificar uma mensagem de fluxo TNEF em uma mensagem MAPI. Para liberar o objeto TNEF e fechar a sessão, o provedor de transporte deve chamar o método IUnknown::Release herdado no objeto.

O valor base do parâmetro wKeyVal não deve ser zero e não deve ser o mesmo para cada chamada para OpenTnefStreamEx. Em vez disso, use números aleatórios com base no tempo do sistema do gerador de número aleatório da biblioteca de tempo de execução.

Referência do MFCMAPI

Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.

Arquivo Função Comentário
File.cpp
LoadFromTNEF
O MFCMAPI usa o método OpenTnefStreamEx para abrir um fluxo no arquivo TNEF para que as propriedades possam ser extraídas.

Confira também