Windows 10 default e-mail application works for everything but LibreOffice. Tries to open the Outlook trial program no matter what default program is specified.
And what default program is specified?
Trying to use emClient. That is what is specified by Windows. There is no setting in Libreoffice to specify.
LibreOffice’s strategy to send mail on Windows is very simple. It is defined in its senddoc.cxx, and in layman terms may be described like this: “use one single MS API to do everything”.
Specifically, it prepares all email information (recipients, mail body, attachments), and then calls MAPISendMailHelper (Simple MAPI) function. This is all what LibreOffice code does. So the end result depends on what MS MAPISendMailHelper function does itself.
Now let’s see what MS code does, so that you can check if any mail client fulfills Microsoft expectations for proper default Simple MAPI provider registration. Briefly it’s described here, but the function’s source code is available in MS SDKs, and we can consult it to see it in greater details.
- It calls
LoadLibraryW(L"mapi32.dll");
to loadmapi32.dll
library (it’s a MS standard library normally found inWindows\System32
directory). It checks if the library has function namedMAPISendMailW
, and if it is present, simply calls it (it is true for Windows 8.0 and newer). - Otherwise, it proceeds with explicit search for mail provider calling a function appropriately named
LoadDefaultMailProvider
.
- The latter (indirectly) checks registry under both
HKEY_CURRENT_USER
andHKEY_LOCAL_MACHINE
(in that order) for keySoftware\Clients\Mail
. - Then it checks if the calling application (in our case, it’s LibreOffice’s
senddoc.exe
) wants a specific mail provider (checkingHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem\MSMapiApps
). Note: LibreOffice itself doesn’t write any explicit requirements there, so the check should not normally result in any explicit requirement. - Then, it checks the provider name in the default value under
Software\Clients\Mail
(this is finally where the true default mail provider is registered!). - Then it opens the subkey under
Software\Clients\Mail
with the name found at previous step. It checks if the provider is installed on demand, and if required, tries to install it on demand. - After that, it checks the key opened on the previous step for
DLLPath
value, to get the actual MAPI dll provided by the default Mail application. - If previous checks (under
HKEY_CURRENT_USER
andHKEY_LOCAL_MACHINE
) failed, it tries to loadmapi32x.dll
. Possibly that is what makes the fallback to the “Outlook trial program” on your system, and that means that the “emClient” isn’t properly registered on your system (despite it claims to support Simple MAPI). - It opens the selected library, and tries to call
MAPISendMailW
in it.
- If the previous step failed, it falls back to
mapi32.dll
'sMAPISendMail
. Here, again, fallback could happen.
The steps above may give you hints where to look for the missing registration bits. It may turn out that your email program doesn’t support Simple MAPI at all; or it might not register properly. You might then file some support request against your mail application’s vendor.
The user is not an administrative account, and had to have temporary admin rights to be able to fix the registry entries. This worked perfectly!