windows outlook mapi mapisendmail

windows - Aplicación MAPI de 32 bits con Outlook de 64 bits



mapisendmail (2)

Eso no es completamente cierto @DmitryStreblechenko, al menos no para la función MAPISendMail . Para eso, y solo para eso, es posible construir un "Puente de Outlook64". Esto redirigirá las llamadas MAPISendMail 32 bits a Outlook de 64 bits. Ese puente puede verse así:

[HKEY_LOCAL_MACHINE/SOFTWARE/Clients/Mail/Outlook64Bridge] @="Outlook64Bridge" "DLLPathEx"="c://Windows//winsxs//x86_microsof t-windows-mapi_31bf3856ad364e35_6.1.7600.16385_none_ab239772 7b134496//MAPI32.DLL" "DLLPath"="c://Windows//winsxs//x86_microsoft-windows-mapi_31bf3856ad364e35_6.1.7600.16385_none_ab239772 7b134496//MAPI32.DLL"

IMPORTANTE : primero debes verificar la ruta correcta de tu mapi32.dll 32 mapi32.dll .

Después de agregar estas líneas al registro, debe configurar el Outlook64Bridge como su cliente de correo predeterminado de la siguiente manera:

[HKEY_LOCAL_MACHINE/SOFTWARE/Clients/Mail] @="Outlook64Bridge"

Se confirma que funciona para aplicaciones simples de 32 bits que usan realmente solo la función MAPISendMail .

Más información se puede encontrar aquí

La versión de 32 bits de nuestra aplicación no puede enviar correos electrónicos utilizando MAPISendMail con Outlook de 64 bits instalado. Devuelve un error 0x80004005, sobre el cual puedo encontrar poca información más allá del hecho de que parece ser un error de inicialización de MAPI.

Según este documento de MSDN , MAPISendMail es la única excepción a la regla de que las aplicaciones de 32 bits no pueden usar MAPI de 64 bits. Y, sin embargo, no funciona (al menos con XP y Vista, aún no hemos probado Win7 / 8).

¿Alguien puede aclarar esto?

TIA


No hay excepciones: un proceso de 32 bits no puede cargar un dll de 64 bits. Cuando tiene la versión de 64 bits de Outlook, la versión de 64 bit de mapi32.dll contiene la implementación real. La versión de 32 bit de mapi32.dll es un stub que no hace más que devolver un error.