Como usar propriedades nomeadas para relacionar as entradas do contato catálogo de endereços para mensagens de email, endereços de email e anexos de imagem no Outlook 2003

Traduções deste artigo Traduções deste artigo
ID do artigo: 912237 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

INTRODUÇÃO

O catálogo de endereços contato é um recurso do Microsoft Office Outlook 2003 Service Pack 2 (SP2), assim como nas versões anteriores do Microsoft Outlook. Este artigo descreve como usar propriedades nomeadas para relacionar as entradas do contato catálogo de endereços para mensagens de email, endereços de email e anexos de imagem no Outlook 2003 SP2.

Mais Informações

Sobre o catálogo de endereços contato

O provedor de catálogo de contrato que está incluído no Outlook 2003 SP2 é contab32.dll. Este provedor exibe informações de uma pasta Contatos em forma de um catálogo de endereços contato. O provedor faz isso para que você possa usar os contatos no catálogo de endereços contato para endereçar mensagens de email. Todos os contatos que têm um endereço de email ou um número de fax são representados no catálogo de endereços contato por uma listagem separada para cada endereço de email ou fax número. Como um contato pode ter até três endereços de email e três números de fax, cada contato, portanto, pode ser representado por até seis entradas separadas no catálogo de endereços contato.

Como relacionar entradas do catálogo de endereços contato para mensagens de email

As informações que está em uma entrada do contato catálogo de endereços são um subconjunto de informações na mensagem de email subjacente para o contato. A seguinte estrutura CONTAB_ENTRYID pode ser usada para determinar a entrada do catálogo de endereços de contato do qual uma mensagem subjacente é derivada.

definição
#pragma pack(4)
typedef struct _contab_entryid
{
  BYTE misc1[4];
  MAPIUID misc2;
  ULONG misc3;
  ULONG misc4;
  ULONG misc5;
  // EntryID of contact in store.
  ULONG cbeid;
  BYTE abeid[1];
} CONTAB_ENTRYID, *LPCONTAB_ENTRYID;
#pragma pack()
CONTAB_ENTRYID A estrutura define o formato dos objetos de identificações de IMailUser entrada que são usados no catálogo de endereços de contato. Você pode obter identificações de entrada desse tipo de uma ou ambas das seguintes fontes:
  • A coluna PR_ENTRYID da tabela de conteúdo catálogo contato
  • Propriedade de um objeto IMailUser que for aberto a partir do catálogo de endereços contato PR_ENTRYID
Para abrir a mensagem subjacente, typecast a identificação de entrada de catálogo de endereços contato para essa estrutura. Em seguida, usar os membros cbeid e abeid como identificação de entrada. ?s contato

exemplo Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.
HRESULT HrOpenContact(
  LPMAPISESSION lpSession,
  ULONG cbEntryID,
  LPENTRYID lpEntryID,  
  ULONG ulFlags,
  LPMESSAGE* lpContactMessage)
{
  ULONG ulObjType = NULL;
  if (sizeof(CONTAB_ENTRYID) > cbEntryID)
      return MAPI_E_INVALID_PARAMETER;
  LPCONTAB_ENTRYID lpContabEID = (LPCONTAB_ENTRYID) lpEntryID;
  HRESULT hRes = lpSession->OpenEntry(
      lpContabEID->cbeid,
      (LPENTRYID) lpContabEID->abeid,
      NULL,
      ulFlags,
      &ulObjType,
      (LPUNKNOWN*) lpContactMessage);
  return hRes;
}

Como relacionar entradas do catálogo de endereços de contato para endereços de email

A única maneira para acessar os endereços de email em uma mensagem de contato catálogo é através das propriedades nomeadas na mensagem subjacente. As propriedades que estão documentadas aqui são propriedades somente leitura. O Outlook 2003 não suporta soluções que gravam essas propriedades.

definições
DEFINE_OLEGUID(PSETID_Address, MAKELONG(0x2000+(0x04),0x0006),0,0);
#define dispidEmailAddrType 0x8082
#define dispidEmailEmailAddress 0x8083
#define dispidEmail2AddrType 0x8092
#define dispidEmail2EmailAddress 0x8093
#define dispidEmail3AddrType 0x80A2
#define dispidEmail3EmailAddress 0x80A3
DEFINE_OLEGUID(PSETID_Address, MAKELONG(0x2000+(0x04),0x0006),0,0); #define dispidEmailAddrType 0x8082 #define dispidEmailEmailAddress 0x8083 #define dispidEmail2AddrType 0x8092 #define dispidEmail2EmailAddress 0x8093 #define dispidEmail3AddrType 0x80A2 #define dispidEmail3EmailAddress... uso

Você pode usar as constantes a seguintes para preencher a estrutura MAPINAMEID. Essas constantes são os vários campos da estrutura.
Recolher esta tabelaExpandir esta tabela
ConstanteCampo
PSETID_AdresslpGuid
MNID_IDulKind
DISPIDTampa
Após preencher a estrutura MAPINAMEID, use o método GetIDsFromNames para obter a propriedade atual identificações para essas propriedades. Essas propriedades são todas as propriedades de seqüência de caracteres.

exemplo Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.
HRESULT HrGetEmail1(LPMESSAGE lpContact)
{
  HRESULT hRes = S_OK;
  LPSPropTagArray lpNamedPropTags = NULL;
  MAPINAMEID NamedID = {0};
  LPMAPINAMEID lpNamedID = &NamedID;
  NamedID.lpguid = (LPGUID)&PSETID_Address;
  NamedID.ulKind = MNID_ID;
  NamedID.Kind.lID = dispidEmailEmailAddress;
  hRes = lpContact->GetIDsFromNames(
      1,
      &lpNamedID,
      NULL,
      &lpNamedPropTags);
  if (SUCCEEDED(hRes) && lpNamedPropTags)
  {
      SPropTagArray sPropTagArray;
      sPropTagArray.cValues = 1;
      sPropTagArray.aulPropTag[0] = CHANGE_PROP_TYPE(lpNamedPropTags->aulPropTag[0],PT_STRING8);
      LPSPropValue lpProps = NULL;
      ULONG cProps = 0;
      hRes = lpContact->GetProps(
        &sPropTagArray,
        NULL,
        &cProps,
        &lpProps);
    if (SUCCEEDED(hRes) &&
      1 == cProps &&
      lpProps &&
      PT_STRING8 == PROP_TYPE(lpProps[0].ulPropTag) &&
      lpProps[0].Value.lpszA)
      {
          printf("Email address 1 = \"%s\"\n",lpProps[0].Value.lpszA);
      }
    MAPIFreeBuffer(lpProps);
    MAPIFreeBuffer(lpNamedPropTags);
  }
  return hRes;
}

Como relacionar as entradas do contato catálogo de endereços para imagens

O Outlook oferece suporte a uma única imagem para cada contato. Esta imagem é armazenada como um anexo na mensagem subjacente. Para determinar qual anexo contém a imagem, use a propriedade PR_ATTACHMENT_CONTACTPHOTO . A propriedade documentada aqui é uma propriedade somente leitura. O Outlook não suporta soluções que gravar essa propriedade.

definição

#define PR_ATTACHMENT_CONTACTPHOTO PROP_TAG( PT_BOOLEAN, 0x7FFF)
uso

A propriedade PR_ATTACHMENT_CONTACTPHOTO pode ser acessada como uma coluna na tabela de anexo que é obtida através de IMessage::GetAttachmentTable. A propriedade PR_ATTACHMENT_CONTACTPHOTO é acessada como uma propriedade no objeto IAttach. Se o valor da propriedade PR_ATTACHMENT_CONTACTPHOTO for true, o anexo contém a imagem de contato. A imagem é armazenada como um arquivo .JPEG. Use os métodos MAPI típicos para extrair este anexo para um arquivo.

Referências

Para obter mais informações, visite os seguintes sites:
http://msdn2.microsoft.com/en-us/library/bb905282.aspx
http://msdn2.microsoft.com/en-us/library/bb820925.aspx
http://msdn2.microsoft.com/en-us/library/bb821181.aspx

Propriedades

ID do artigo: 912237 - Última revisão: domingo, 27 de outubro de 2013 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Office Outlook 2003 nas seguintes plataformas
    • Microsoft Office 2003 Service Pack 2
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhowto KB912237 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 912237

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com