Compartilhar via


Criar texto da mensagem

Aplica-se a: Outlook 2013 | Outlook 2016

Embora algumas mensagens sejam compostas de nada mais do que uma lista de destinatários e uma linha de assunto, o conteúdo da maioria das mensagens, especificamente IPM. Observação de mensagens, inclui texto. O texto da mensagem pode ser simples ou formatado e é armazenado em três propriedades: PR_BODY (PidTagBody), PR_HTML (PidTagHtml) e PR_RTF_COMPRESSED (PidTagRtfCompressed).

Se o cliente for baseado em texto simples, defina PR_BODY. Se você dá suporte ao texto formatado no RTF (Rich Text Format), defina apenas PR_RTF_COMPRESSED ou PR_RTF_COMPRESSED e PR_BODY, dependendo do provedor do repositório de mensagens que você está usando. Quando um cliente com reconhecimento RTF estiver usando um repositório de mensagens com reconhecimento RTF, ele define apenas PR_RTF_COMPRESSED . Quando um cliente com reconhecimento RTF está usando um repositório de mensagens sem reconhecimento RTF, ele define ambas as propriedades. Se o cliente for compatível com HTML, defina a propriedade PR_HTML .

Determinar se o repositório de mensagens dá suporte ao Rich Text Format

  1. Chame o método IMAPIProp::GetProps do repositório de mensagens para recuperar a propriedade PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask).

  2. Verifique a STORE_RTF_OK bit. Se STORE_RTF_OK estiver definido, o provedor do repositório de mensagens será compatível com o texto RTF. Se ele não estiver definido, o provedor do repositório de mensagens será compatível apenas com texto simples.

Determinar se o repositório de mensagens dá suporte a HTML

  1. Chame o método IMAPIProp::GetProps do repositório de mensagens para recuperar a propriedade PR_STORE_SUPPORT_MASK .

  2. Verifique a STORE_HTML_OK bit. Se STORE_HTML_OK estiver definido, o provedor do repositório de mensagens será compatível com texto HTML.

Definir PR_RTF_COMPRESSED

  1. Chame o método IMAPIProp::OpenProperty da mensagem para abrir a propriedade PR_RTF_COMPRESSED , especificando IID_IStream como o identificador de interface e definindo o sinalizador MAPI_CREATE.

  2. Chame a função WrapCompressedRTFStream , passando o sinalizador STORE_UNCOMPRESSED_RTF se o bit STORE_UNCOMPRESSED_RTF estiver definido na propriedade PR_STORE_SUPPORT_MASK do repositório de mensagens.

  3. Libere o fluxo original chamando seu método IUnknown::Release .

  4. Chame IStream::Write ou IStream::CopyTo para gravar o texto da mensagem no fluxo retornado de WrapCompressedRTFStream.

  5. Chame os métodos Commit e Release no fluxo retornado do método OpenProperty .

Neste ponto, se o provedor do repositório de mensagens der suporte ao RTF, você terá feito tudo o que é necessário. Você pode depender do provedor do repositório de mensagens para lidar com a sincronização do conteúdo e da formatação da mensagem e para criar a propriedade PR_BODY , se necessário. Os repositórios de mensagens com reconhecimento RTF chamam RTFSync para lidar com a sincronização. Se o sinalizador RTF_SYNC_BODY_CHANGED estiver definido como TRUE, o provedor recomputará a propriedade PR_BODY .

Se o provedor do repositório de mensagens não for compatível com RTF, você também deverá adicionar conteúdo de mensagem não RTF definindo a propriedade PR_BODY .

Definir PR_HTML

  1. Chame o método IMAPIProp::OpenProperty para abrir a propriedade PR_HTML com a interface IStream .

  2. Chame IStream::Write para gravar os dados de texto da mensagem no fluxo retornado do OpenProperty.

  3. Chame IStream::Commit e IUnknown::Release no fluxo para confirmar as alterações e liberar sua memória.

Definir PR_BODY

  1. Chame o método IMAPIProp::OpenProperty para abrir a propriedade PR_BODY com a interface IStream .

  2. Chame IStream::Write para gravar os dados de texto da mensagem no fluxo retornado do OpenProperty.

  3. Chame a função RTFSync para sincronizar o texto com a formatação. Como essa é uma nova mensagem, defina os sinalizadores RTF_SYNC_RTF_CHANGED e RTF_SYNC_BODY_CHANGED para indicar que a versão de texto simples e RTF do texto da mensagem foi alterada. O RTFSync definirá várias propriedades relacionadas que o provedor do repositório de mensagens exige, como PR_RTF_IN_SYNC (PidTagRtfInSync) e as gravará na mensagem.

  4. Chame IStream::Commit e IUnknown::Release no fluxo para confirmar as alterações e liberar sua memória.