Función de devolución de llamada MAPISENDMAILW (mapi.h)
Envía un mensaje Unicode. Esta función reemplaza a la función ANSI MAPISendMail.
En Windows 7 y versiones anteriores: Instale el Kit de desarrollo de software (SDK) de Microsoft Windows para Windows 8 y use MAPISendMailHelper para enviar un mensaje.
Toda la información se aplica tanto a MAPISendMailW como a MAPISendMail a menos que se especifique lo contrario.
Sintaxis
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
Identificador de 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
Tipo: ULONG_PTR
Identificador de ventana principal o cero.
Si el parámetro ulUIParam contiene el identificador de ventana principal, el identificador es el tipo HWND (convertido en un ULONG_PTR).
Si no se muestra ningún cuadro de diálogo durante la llamada, se omite ulUIParam .
[in] lpMessage
Tipo: lpMapiMessageW
Puntero a una estructura MAPISendMailW que contiene el mensaje que se va a enviar.
Miembro | Notas |
---|---|
lpFiles | Establezca este miembro en NULL cuando el mensaje no tenga datos adjuntos de archivo. |
lpszMessageType | Lo usan las 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. |
Para obtener más detalles sobre cómo la función controla la información del destinatario, vea Controlar la información del destinatario en comentarios.
[in] flFlags
Tipo: FLAGS
Máscara de bits de las marcas de opción. Se pueden establecer las marcas siguientes.
Valor | Significado |
---|---|
|
Se debe mostrar un cuadro de diálogo modal de aplicación para solicitar al usuario destinatarios y otras opciones de envío.
Si no se establece MAPI_DIALOG ni MAPI_DIALOG_MODELESS , se debe especificar al menos un destinatario. |
|
Disponible en Windows con la próxima 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 MAPI_DIALOG ni MAPI_DIALOG_MODELESS , se debe especificar al menos un destinatario. Propina Para usar esta marca en Windows 7 o versiones anteriores, debe tener Instalado Windows SDK para Windows 8 y la próxima versión de Office, y debe llamar a MAPISendMailHelper en lugar de MAPISendMailW.
|
|
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 . |
|
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 de 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 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. |
|
No convierta el mensaje en ANSI si el proveedor no admite Unicode.
Nota Esta marca solo está disponible para MAPISendMailW .
|
ulReserved
Tipo: ULONG
Reservados; debe ser cero.
Valor devuelto
Tipo: ULONG
Esta función devuelve uno de los valores siguientes.
Código o valor devuelto | Descripción |
---|---|
|
Un destinatario coincide con más de una de las estructuras de descriptor de destinatario y no se estableció MAPI_DIALOG. No se envió ningún mensaje. |
|
No se encontraron los datos adjuntos especificados. No se envió ningún mensaje. |
|
No se pudieron abrir los datos adjuntos especificados. No se envió ningún mensaje. |
|
Los datos adjuntos especificados eran demasiado grandes. No se envió ningún mensaje. |
|
El tipo de destinatario no se MAPI_TO, MAPI_CC ni MAPI_BCC. No se envió ningún mensaje. |
|
Se han producido uno o varios errores no especificados. No se envió ningún mensaje. |
|
No había memoria suficiente para continuar. No se envió ningún mensaje. |
|
Uno o varios destinatarios no eran válidos o no se resolvieron en ninguna dirección. |
|
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. |
|
El texto del mensaje era demasiado grande. No se envió ningún mensaje. |
|
Había demasiados archivos adjuntos. No se envió ningún mensaje. |
|
Había demasiados destinatarios. No se envió ningún mensaje. |
|
Se especifica la marca MAPI_FORCE_UNICODE y no se admite Unicode.
NotaMAPISendMailW solo puede devolver este valor.
|
|
Un destinatario no apareció en la lista de direcciones. No se envió ningún mensaje. |
|
El usuario canceló uno de los cuadros de diálogo. No se envió ningún mensaje. |
|
La llamada se realizó correctamente y se envió el mensaje. |
Comentarios
Las funciones MAPISendMailW (Unicode) y MAPISendMail (ANSI) envían un mensaje estándar, con o sin ninguna interacción del usuario. El perfil debe configurarse para que cualquiera de las funciones pueda abrir los proveedores de servicios predeterminados sin necesidad de interacción del usuario.
Ni MAPISendMailW ni MAPISendMail requieren un destinatario de tipo originador para enviar un mensaje.
La aplicación cliente puede proporcionar una lista completa o parcial de nombres de destinatarios, texto de asunto, datos adjuntos de archivo o texto de mensaje. Si falta información, la función a la que llama ( MAPISendMailW o MAPISendMail) puede solicitar al usuario la información que falta.
Si no falta información, se puede enviar el mensaje tal y como está o se puede pedir al usuario que compruebe la información y cambie los valores si es necesario.
MAPISendMailW y MAPISendMail difieren de la función MAPISendDocuments en que permiten una mayor flexibilidad en la generación de mensajes.
Texto del mensaje
Algunas aplicaciones cliente pueden truncar líneas de asunto demasiado largas o contener retornos de carro, avance de línea o fuentes de formulario.Cada párrafo debe terminarse con una CR (0x0d), un LF (0x0a) o un par CRLF (0x0d0a). Tanto MAPISendMailW como MAPISendMail encapsulan líneas según corresponda.
Si el texto supera los límites del sistema, la función devuelve el valor MAPI_E_TEXT_TOO_LARGE .
Archivos adjuntos
El número de datos adjuntos por mensaje puede limitarse en algunos sistemas de mensajería. Si se supera este límite, se produce un error en la función y devuelve el valor MAPI_E_TOO_MANY_FILES .Los datos adjuntos de archivo se copian en el mensaje antes de que la función devuelva; por lo tanto, los cambios posteriores en los archivos no afectan al contenido del mensaje. Los archivos deben cerrarse cuando se copian.
No intente mostrar datos adjuntos fuera del intervalo del texto del mensaje.
Destinatarios
Algunos sistemas de mensajería pueden limitar el número de destinatarios por mensaje. Si la aplicación cliente pasa un valor distinto de NULL que indica un número de destinatarios que superan el límite del sistema, se produce un error en la función y devuelve el valor de MAPI_E_TOO_MANY_RECIPIENTS .Si la aplicación cliente envía mensajes a uno o varios destinatarios personalizados y desea evitar resolver los nombres de esos destinatarios, debe especificar la dirección del destinatario personalizado.
Para especificar una dirección de un destinatario al llamar a MAPISendMailW, debe establecer el miembro lpszAddress de la estructura MapiRecipDescW que contiene la información del destinatario en la dirección personalizada. Esta estructura MapiRecipDescW se incluye en la matriz de destinatarios almacenados en el miembro lpRecips de la estructura MapiMessageW que el parámetro lpMessage pasa a la función.
Una devolución correcta de la función no implica necesariamente la validación del destinatario. Es posible que el mensaje no se haya enviado a todos los destinatarios. Dependiendo del proveedor de transporte, la validación de destinatarios puede ser un proceso largo.
Control de la información del destinatario
El miembro lpRecips de la estructura MapiMessageW o MapiMessage puede incluir un identificador de entrada, el nombre del destinatario, una dirección o un par de nombres y direcciones. En la tabla siguiente se muestra cómo controla la función cada caso.Información del destinatario | Acción |
---|---|
Identificador de entrada | Sin resolución de nombres; se omiten el nombre y la dirección. |
Nombre | Nombre resuelto mediante las reglas de resolución MAPI simples. |
Dirección | Sin resolución de nombres; la dirección se usa para la entrega de mensajes y para mostrar el nombre del destinatario. |
Nombre y dirección | Sin resolución de nombres; name usado solo para mostrar el nombre del destinatario. |
Requisitos
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | mapi.h |
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de