Función MAPISendMailHelper (mapiunicodehelp.h)

Toma información del mensaje Unicode y envía el mensaje mediante MAPISendMailW o, si es necesario, convierte el mensaje en ANSI y envía el mensaje mediante MAPISendMail. En Windows 8 y versiones posteriores: llame directamente a MAPISendMailW para enviar un mensaje.

Sintaxis

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

Parámetros

[in] lhSession

Controle una sesión MAPI simple o cero.

Si el valor del parámetro lhSession es cero, MAPI inicia sesión en el usuario y crea una sesión que solo existe durante la llamada. Esta sesión temporal puede ser una sesión compartida existente o una nueva. Si es necesario, se muestra el cuadro de diálogo de inicio de sesión.

[in] ulUIParam

Identificador de ventana principal o cero.

Si el valor del parámetro ulUIParam es cero y se muestra un cuadro de diálogo, el cuadro de diálogo es modal de la aplicación. Si el parámetro ulUIParam contiene un identificador de ventana principal, es de tipo HWND (convertido a un ULONG_PTR). Si no se muestra ningún cuadro de diálogo durante la llamada, se omite ulUIParam .

[in] lpMessage

Puntero a una estructura MAPISendMailW que contiene el mensaje que se va a enviar.

Si el proveedor de correo registrado requiere que el mensaje use la codificación ANSI, MAPISendMailHelper convierte este mensaje en la estructura MAPiMessage ANSI llama a MAPISendMail para enviar el mensaje.

Al llamar a la función, tenga en cuenta la siguiente información sobre los miembros de la estructura de mensajes:

Miembro Notas
lpFiles Establezca este miembro en NULL cuando el mensaje no tenga datos adjuntos de archivo.
lpszMessageType Se usa en aplicaciones que no controlan los mensajes interpersonales. Si la aplicación controla los mensajes interpersonales, establezca el miembro lpszMessageType en NULL o establézcalo para que apunte a una cadena vacía.
lpszSubject Un valor null significa que no hay texto para el asunto del mensaje.
lpszNoteText Un valor null significa que no hay texto en el cuerpo del mensaje.
lpRecips Un valor null significa que no hay destinatarios. Además, cuando este miembro es NULL, el miembro nRecipCount debe ser cero.
nRecipCount Un valor de cero significa que no hay destinatarios. Además, cuando este miembro es cero, el miembro lpRecips debe ser NULL.
 
Propina Al llamar a la función y no hay destinatarios, debe establecer la marca MAPI_DIALOG o la marca de MAPI_DIALOG_MODELESS para solicitar al usuario información del destinatario.
 
Si no se establece MAPI_DIALOG o MAPI_DIALOG_MODELESS , los miembros nRecipCount y lpRecips de la estructura deben ser válidos para la entrega correcta de mensajes. Las aplicaciones cliente pueden establecer el miembro flFlagsen MAPI_RECEIPT_REQUESTED para solicitar un informe de lectura.

Para obtener más información sobre cómo la función controla la información del destinatario, consulte Control de la información del destinatario en MAPISendMailW.

[in] flFlags

Máscara de bits de marcas de opción. Se pueden establecer las marcas siguientes.

Valor Significado
MAPI_DIALOG
0x00000008
Se debe mostrar un cuadro de diálogo para solicitar al usuario destinatarios y otras opciones de envío.

Si no se establece ni MAPI_DIALOG ni MAPI_DIALOG_MODELESS , se debe especificar al menos un destinatario.

MAPI_DIALOG_MODELESS
0x00000004 | MAPI_DIALOG
Disponible en Windows 7 o versiones anteriores con la siguiente versión de Office: Se debe mostrar un cuadro de diálogo modeless para solicitar al usuario destinatarios y otras opciones de envío.

Si se establece MAPI_DIALOG_MODELESS , el parámetro lhSession debe establecerse en cero. De lo contrario, si se establece esta marca y lhSession no es cero, Outlook generará una excepción.

Además, si se establece MAPI_DIALOG_MODELESS , el sistema omite la marca MAPI_NEW_SESSION .

Si no se establece ni MAPI_DIALOG ni MAPI_DIALOG_MODELESS , se debe especificar al menos un destinatario.

MAPI_LOGON_UI
0x00000001
Se debe mostrar un cuadro de diálogo para pedir al usuario que inicie sesión si es necesario.

Si no se establece la marca MAPI_LOGON_UI , la aplicación cliente no muestra un cuadro de diálogo de inicio de sesión y devuelve un valor de error si el usuario no ha iniciado sesión.

Si el parámetro lpszMessageID está vacío, se omite la marca MAPI_LOGON_UI .

MAPI_NEW_SESSION
0x00000002
Se intenta crear una nueva sesión en lugar de adquirir la sesión compartida del entorno. Si no se establece la marca MAPI_NEW_SESSION , la función usa una sesión compartida existente.

Si establece la marca MAPI_NEW_SESSION (lo que impide el uso de una sesión compartida) y el perfil requiere una contraseña, también debe establecer la marca de MAPI_LOGON_UI o se producirá un error en la función. La aplicación cliente puede evitar este error mediante el uso del perfil predeterminado sin una contraseña o mediante un perfil explícito sin contraseña.

MAPI_FORCE_UNICODE
0x00040000
No convierta el mensaje en ANSI si el proveedor no admite Unicode.

[in] ulReserved

Reservados; debe ser cero.

Valor devuelto

Esta función devuelve uno de los valores siguientes.

Código o valor devuelto Descripción
MAPI_E_AMBIGUOUS_RECIPIENT
21
Un destinatario coincide con más de una de las estructuras del descriptor de destinatario y MAPI_DIALOG no se estableció. No se envió ningún mensaje.
MAPI_E_ATTACHMENT_NOT_FOUND
11
No se encontraron los datos adjuntos especificados. No se envió ningún mensaje.
MAPI_E_ATTACHMENT_OPEN_FAILURE
12
No se pudieron abrir los datos adjuntos especificados. No se envió ningún mensaje.
MAPI_E_BAD_RECIPTYPE
15
El tipo de destinatario no se MAPI_TO, MAPI_CC o MAPI_BCC. No se envió ningún mensaje.
MAPI_E_FAILURE
2
Se han producido uno o varios errores no especificados. No se envió ningún mensaje.
MAPI_E_INSUFFICIENT_MEMORY
5
No había memoria suficiente para continuar. No se envió ningún mensaje.
MAPI_E_INVALID_RECIPS
25
Uno o varios destinatarios no eran válidos o no se resolvieron en ninguna dirección.
MAPI_E_LOGIN_FAILURE
3
No había ningún inicio de sesión predeterminado y el usuario no pudo iniciar sesión correctamente cuando se mostraba el cuadro de diálogo de inicio de sesión. No se envió ningún mensaje.
MAPI_E_TEXT_TOO_LARGE
18
El texto del mensaje era demasiado grande. No se envió ningún mensaje.
MAPI_E_TOO_MANY_FILES
9
Había demasiados archivos adjuntos. No se envió ningún mensaje.
MAPI_E_TOO_MANY_RECIPIENTS
10
Había demasiados destinatarios. No se envió ningún mensaje.
MAPI_E_UNICODE_NOT_SUPPORTED
27
Se especifica la marca MAPI_FORCE_UNICODE y no se admite Unicode.
Nota Este valor solo se puede devolver si se llama a MAPISendMailW para enviar el mensaje.
 
MAPI_E_UNKNOWN_RECIPIENT
14
Un destinatario no apareció en la lista de direcciones. No se envió ningún mensaje.
MAPI_E_USER_ABORT
1
El usuario canceló uno de los cuadros de diálogo. No se envió ningún mensaje.
SUCCESS_SUCCESS
0
La llamada se realizó correctamente y se envió el mensaje.

Comentarios

Para obtener más información sobre las funciones de correo de envío de MAPI, vea MAPISendMailW.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado mapiunicodehelp.h
Archivo DLL Mapi32.dll

Consulte también

MAPISendMailW

Windows SDK para Windows 8