Função de retorno de chamada MAPISENDMAILW (mapi.h)
Envia uma mensagem Unicode. Essa função substitui a função ANSI MAPISendMail.
No Windows 7 e anteriores: Instale o Microsoft Windows Software Development Kit (SDK) para Windows 8 e use MAPISendMailHelper para enviar uma mensagem.
Todas as informações se aplicam a MAPISendMailW e MAPISendMail , a menos que seja especificado de outra forma.
Sintaxe
MAPISENDMAILW Mapisendmailw;
ULONG Mapisendmailw(
[in] LHANDLE lhSession,
[in] ULONG_PTR ulUIParam,
[in] lpMapiMessageW lpMessage,
[in] FLAGS flFlags,
ULONG ulReserved
)
{...}
Parâmetros
[in] lhSession
Tipo: LHANDLE
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
Tipo: ULONG_PTR
Identificador de janela pai ou zero.
Se o parâmetro ulUIParam contiver o identificador de janela pai, o identificador 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
Tipo: lpMapiMessageW
Ponteiro para uma estrutura MAPISendMailW que contém a mensagem a ser enviada.
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. |
Para obter mais detalhes sobre como a função lida com informações do destinatário, consulte Manipulando informações do destinatário em Comentários.
[in] flFlags
Tipo: FLAGS
Máscara de bits de sinalizadores de opção. Os sinalizadores a seguir podem ser definidos.
Valor | Significado |
---|---|
|
Uma caixa de diálogo modal do aplicativo 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. |
|
Disponível no Windows 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. Ponta Para usar esse sinalizador no Windows 7 ou anterior, você deve ter o SDK do Windows para Windows 8 e a próxima versão do Office instalado, e você deve chamar MAPISendMailHelper em vez de MAPISendMailW.
|
|
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. |
|
É 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. |
|
Não converta a mensagem em ANSI se o provedor não der suporte ao Unicode.
Nota Esse sinalizador está disponível apenas para MAPISendMailW .
|
ulReserved
Tipo: ULONG
Reservados; deve ser zero.
Valor retornado
Tipo: ULONG
Essa função retorna um dos valores a seguir.
Valor/código retornado | Descrição |
---|---|
|
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. |
|
O anexo especificado não foi encontrado. Nenhuma mensagem foi enviada. |
|
Não foi possível abrir o anexo especificado. Nenhuma mensagem foi enviada. |
|
O anexo especificado era muito grande. Nenhuma mensagem foi enviada. |
|
O tipo de destinatário não foi MAPI_TO, MAPI_CC ou MAPI_BCC. Nenhuma mensagem foi enviada. |
|
Ocorreu um ou mais erros não especificados. Nenhuma mensagem foi enviada. |
|
Não havia memória suficiente para continuar. Nenhuma mensagem foi enviada. |
|
Um ou mais destinatários eram inválidos ou não resolve a nenhum endereço. |
|
Não havia nenhum 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. |
|
O texto na mensagem era muito grande. Nenhuma mensagem foi enviada. |
|
Havia muitos anexos de arquivo. Nenhuma mensagem foi enviada. |
|
Havia muitos destinatários. Nenhuma mensagem foi enviada. |
|
O sinalizador MAPI_FORCE_UNICODE é especificado e não há suporte para Unicode.
Nota Esse valor só pode ser retornado por MAPISendMailW .
|
|
Um destinatário não apareceu na lista de endereços. Nenhuma mensagem foi enviada. |
|
O usuário cancelou uma das caixas de diálogo. Nenhuma mensagem foi enviada. |
|
A chamada foi bem-sucedida e a mensagem foi enviada. |
Comentários
As funções MAPISendMailW (Unicode) e MAPISendMail (ANSI) enviam uma mensagem padrão, com ou sem qualquer interação do usuário. O perfil deve ser configurado para que qualquer função possa abrir os provedores de serviço padrão sem a necessidade de interação do usuário.
Nem MAPISendMailW nem MAPISendMail exigem que um destinatário do tipo originador envie uma mensagem.
Seu aplicativo cliente pode fornecer uma lista completa ou parcial de nomes de destinatário, texto do assunto, anexos de arquivo ou texto da mensagem. Se alguma informação estiver ausente, a função que você chamar ( MAPISendMailW ou MAPISendMail) poderá solicitar ao usuário as informações ausentes.
Se nenhuma informação estiver ausente, a mensagem poderá ser enviada como está ou o usuário poderá ser solicitado a verificar as informações e alterar os valores, se necessário.
Tanto MAPISendMailW quanto MAPISendMail diferem da função MAPISendDocuments , pois permitem maior flexibilidade na geração de mensagens.
Texto da mensagem
Alguns aplicativos cliente podem truncar linhas de assunto que são muito longas ou contêm retornos de carro, feeds de linha ou feeds de formulário.Cada parágrafo deve ser encerrado com um CR (0x0d), um LF (0x0a) ou um par CRLF (0x0d0a). MapISendMailW e MAPISendMail encapsulam as linhas conforme apropriado.
Se o texto exceder os limites do sistema, a função retornará o valor MAPI_E_TEXT_TOO_LARGE .
Anexos de arquivo
O número de anexos por mensagem pode ser limitado em alguns sistemas de mensagens. Se esse limite for excedido, a função falhará e retornará o valor MAPI_E_TOO_MANY_FILES .Os anexos de arquivo são copiados para a mensagem antes que a função retorne; portanto, alterações posteriores nos arquivos não afetam o conteúdo da mensagem. Os arquivos devem ser fechados quando são copiados.
Não tente exibir anexos fora do intervalo do texto da mensagem.
Destinatários
Alguns sistemas de mensagens podem limitar o número de destinatários por mensagem. Se o aplicativo cliente passar um valor não NULL indicando um número de destinatários que excedem o limite do sistema, a função falhará e retornará o valor MAPI_E_TOO_MANY_RECIPIENTS .Se o aplicativo cliente enviar mensagens para um ou mais destinatários personalizados e você quiser evitar resolver os nomes desses destinatários, você deverá especificar o endereço do destinatário personalizado.
Para especificar um endereço de um destinatário ao chamar MAPISendMailW, você deve definir o membro lpszAddress da estrutura MapiRecipDescW que contém as informações do destinatário para o endereço personalizado. Essa estrutura MapiRecipDescW está incluída na matriz de destinatários armazenados no membro lpRecips da estrutura MapiMessageW que é passada para a função pelo parâmetro lpMessage .
Um retorno bem-sucedido da função não implica necessariamente a validação do destinatário. A mensagem pode não ter sido enviada a todos os destinatários. Dependendo do provedor de transporte, a validação do destinatário pode ser um processo longo.
Manipulando informações do destinatário
O membro lpRecips do MapiMessageW ou da estrutura MapiMessage pode incluir um identificador de entrada, o nome do destinatário, um endereço ou um par de nomes e endereços. A tabela a seguir mostra como a função lida com cada caso.Informações do destinatário | Ação |
---|---|
Identificador de entrada | Sem resolução de nomes; o nome e o endereço são ignorados. |
Nome | Nome resolvido usando as regras de resolução MAPI simples. |
Endereço | Sem resolução de nomes; o endereço é usado para entrega de mensagens e para exibir o nome do destinatário. |
Nome e endereço | Sem resolução de nomes; nome usado apenas para exibir o nome do destinatário. |
Requisitos
Cliente mínimo com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | mapi.h |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de