Função MAPISendMailHelper (mapiunicodehelp.h)

Obtém informações de mensagem Unicode e envia a mensagem usando MAPISendMailW ou, se necessário, converte a mensagem em ANSI e envia a mensagem usando MAPISendMail. Em Windows 8 e posteriores: chame MAPISendMailW diretamente para enviar uma mensagem.

Sintaxe

ULONG MAPISendMailHelper(
  [in] LHANDLE        lhSession,
  [in] ULONG_PTR      ulUIParam,
  [in] lpMapiMessageW lpMessage,
  [in] FLAGS          flFlags,
  [in] ULONG          ulReserved
);

Parâmetros

[in] lhSession

Manipule para uma sessão MAPI simples ou zero.

Se o valor do parâmetro lhSession for zero, MAPI faz logon no usuário e cria uma sessão que existe apenas durante a chamada. Essa sessão temporária pode ser uma sessão compartilhada existente ou uma nova. Se necessário, a caixa de diálogo de logon será exibida.

[in] ulUIParam

Identificador de janela pai ou zero.

Se o valor do parâmetro ulUIParam for zero e uma caixa de diálogo for exibida, a caixa de diálogo será modal do aplicativo. Se o parâmetro ulUIParam contiver um identificador de janela pai, ele será do tipo HWND (convertido em um ULONG_PTR). Se nenhuma caixa de diálogo for exibida durante a chamada, ulUIParam será ignorado.

[in] lpMessage

Ponteiro para uma estrutura MAPISendMailW que contém a mensagem a ser enviada.

Se o provedor de email registrado exigir que a mensagem use a codificação ANSI, MAPISendMailHelper converterá essa mensagem para a estrutura ANSI MapiMessagechamará MAPISendMail para enviar a mensagem.

Ao chamar a função, observe as seguintes informações sobre membros da estrutura de mensagens:

Membro Observações
lpFiles Defina esse membro como NULL quando a mensagem não tiver anexos de arquivo.
lpszMessageType Usado por aplicativos que não lidam com mensagens interpessoais. Se o aplicativo manipular mensagens interpessoais, defina o membro lpszMessageType como NULL ou defina-o para apontar para uma cadeia de caracteres vazia.
lpszSubject Um valor nulo significa que não há texto para o assunto da mensagem.
lpszNoteText Um valor nulo significa que não há texto no corpo da mensagem.
lpRecips Um valor nulo significa que não há destinatários. Além disso, quando esse membro é NULL, o membro nRecipCount deve ser zero.
nRecipCount Um valor zero significa que não há destinatários. Além disso, quando esse membro é zero, o membro lpRecips deve ser NULL.
 
Ponta Ao chamar a função e não houver destinatários, você deve definir o sinalizador MAPI_DIALOG ou o sinalizador MAPI_DIALOG_MODELESS para solicitar informações do destinatário ao usuário.
 
Se MAPI_DIALOG ou MAPI_DIALOG_MODELESS não estiver definido, os membros nRecipCount e lpRecips da estrutura deverão ser válidos para entrega bem-sucedida de mensagens. Os aplicativos cliente podem definir o membro flFlags como MAPI_RECEIPT_REQUESTED para solicitar um relatório de leitura.

Para obter mais detalhes sobre como a função lida com informações do destinatário, consulte Manipulando informações do destinatário em MAPISendMailW.

[in] flFlags

Máscara de bits de sinalizadores de opção. Os sinalizadores a seguir podem ser definidos.

Valor Significado
MAPI_DIALOG
0x00000008
Uma caixa de diálogo deve ser exibida para solicitar ao usuário destinatários e outras opções de envio.

Se nem MAPI_DIALOG nem MAPI_DIALOG_MODELESS estiver definido, pelo menos um destinatário deverá ser especificado.

MAPI_DIALOG_MODELESS
0x00000004 | MAPI_DIALOG
Disponível no Windows 7 ou anterior com a próxima versão do Office: Uma caixa de diálogo de modelagem deve ser exibida para solicitar ao usuário destinatários e outras opções de envio.

Se MAPI_DIALOG_MODELESS estiver definido, o parâmetro lhSession deverá ser definido como zero. Caso contrário, se esse sinalizador estiver definido e lhSession não for zero, o Outlook gerará uma exceção.

Além disso, se MAPI_DIALOG_MODELESS estiver definido, o sistema ignorará o sinalizador MAPI_NEW_SESSION .

Se nem MAPI_DIALOG nem MAPI_DIALOG_MODELESS estiver definido, pelo menos um destinatário deverá ser especificado.

MAPI_LOGON_UI
0x00000001
Uma caixa de diálogo deve ser exibida para solicitar que o usuário faça logon, se necessário.

Se o sinalizador MAPI_LOGON_UI não estiver definido, o aplicativo cliente não exibirá uma caixa de diálogo de logon e retornará um valor de erro se o usuário não estiver conectado.

Se o parâmetro lpszMessageID estiver vazio, o sinalizador MAPI_LOGON_UI será ignorado.

MAPI_NEW_SESSION
0x00000002
É feita uma tentativa de criar uma nova sessão em vez de adquirir a sessão compartilhada do ambiente. Se o sinalizador MAPI_NEW_SESSION não estiver definido, a função usará uma sessão compartilhada existente.

Se você definir o sinalizador MAPI_NEW_SESSION (impedindo o uso de uma sessão compartilhada) e o perfil exigir uma senha, você também deverá definir o sinalizador MAPI_LOGON_UI ou a função falhará. Seu aplicativo cliente pode evitar essa falha usando o perfil padrão sem uma senha ou usando um perfil explícito sem uma senha.

MAPI_FORCE_UNICODE
0x00040000
Não converta a mensagem em ANSI se o provedor não der suporte ao Unicode.

[in] ulReserved

Reservados; deve ser zero.

Retornar valor

Essa função retorna um dos valores a seguir.

Valor/código retornado Descrição
MAPI_E_AMBIGUOUS_RECIPIENT
21
Um destinatário correspondeu a mais de uma das estruturas do descritor do destinatário e MAPI_DIALOG não foi definido. Nenhuma mensagem foi enviada.
MAPI_E_ATTACHMENT_NOT_FOUND
11
O anexo especificado não foi encontrado. Nenhuma mensagem foi enviada.
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
Não foi possível abrir o anexo especificado. Nenhuma mensagem foi enviada.
MAPI_E_BAD_RECIPTYPE
15
O tipo de destinatário não foi MAPI_TO, MAPI_CC ou MAPI_BCC. Nenhuma mensagem foi enviada.
MAPI_E_FAILURE
2
Ocorreu um ou mais erros não especificados. Nenhuma mensagem foi enviada.
MAPI_E_INSUFFICIENT_MEMORY
5
Não havia memória suficiente para continuar. Nenhuma mensagem foi enviada.
MAPI_E_INVALID_RECIPS
25
Um ou mais destinatários eram inválidos ou não resolve a nenhum endereço.
MAPI_E_LOGIN_FAILURE
3
Não havia logon padrão e o usuário não conseguiu fazer logon com êxito quando a caixa de diálogo de logon foi exibida. Nenhuma mensagem foi enviada.
MAPI_E_TEXT_TOO_LARGE
18
O texto na mensagem era muito grande. Nenhuma mensagem foi enviada.
MAPI_E_TOO_MANY_FILES
9
Havia muitos anexos de arquivo. Nenhuma mensagem foi enviada.
MAPI_E_TOO_MANY_RECIPIENTS
10
Havia muitos destinatários. Nenhuma mensagem foi enviada.
MAPI_E_UNICODE_NOT_SUPPORTED
27
O sinalizador MAPI_FORCE_UNICODE é especificado e não há suporte para Unicode.
Nota Esse valor só poderá ser retornado se MAPISendMailW for chamado para enviar a mensagem.
 
MAPI_E_UNKNOWN_RECIPIENT
14
Um destinatário não apareceu na lista de endereços. Nenhuma mensagem foi enviada.
MAPI_E_USER_ABORT
1
O usuário cancelou uma das caixas de diálogo. Nenhuma mensagem foi enviada.
SUCCESS_SUCCESS
0
A chamada foi bem-sucedida e a mensagem foi enviada.

Comentários

Para obter mais informações sobre funções de email de envio MAPI, consulte MAPISendMailW.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho mapiunicodehelp.h
DLL Mapi32.dll

Confira também

MAPISendMailW

SDK do Windows para Windows 8