Either there is no default mail client or the current mail client cannot fulfill the messaging request. Please run Microsoft Outlook and set it as the default mail client.
Two other resolutions are provided at the end of the "More Information" section.
When a call is made to a function exported by the stub library, the library follows these steps:
- It determines whether the function is a Simple MAPI function or an Extended MAPI function. The following export functions are marked in the stub library as being Simple MAPI functions:
All other export functions are Extended MAPI functions.
- It looks in the following registry key to determine the current default MAPI implementation:HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::(default)
- It then looks under the client's key to find the path of the correct DLL to load. If the function is a Simple MAPI function, it loads the DLL specified by the DllPath value, and then calls the function. If the function is an Extended MAPI function, it loads the DLL specified by the DllPathEx value. After finding the appropriate DLL, it then calls the function.
In the case of Microsoft Outlook, for example, it looks for the value of DLLPath or DLLPathEx under the following key:HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook
- If DllPathEx or DllPath is not found, the stub library uses the Mapi32x.dll file, which is located in the same directory as the stub library. This file is typically a renamed copy of the Mapi32.dll file that already existed when the stub library was installed. On many systems, especially those where only Outlook and Outlook Express have been installed, this file does not exist.
- If the stub library fails to find Mapi32x.dll, it displays the message that is located in one of the following keys:HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::PreFirstRun
- Most Visual Basic code uses Declare statements based on the Mapivb32.bas module, which imports MAPISendMail as BMAPISendMail. Most of the other SimpleMAPI functions are also declared with their BMAPI equivalents.For additional information, click the article number below to view the article in the Microsoft Knowledge Base:163216 Updated Mapivb32.bas for Simple MAPI on 32-Bit Platforms
- Because the BMAPI functions are not on the list of Simple MAPI functions which use the DLL specified in DllPath, the stub library routes them by using the value in DllPathEx.
- Because Outlook Express does not implement Extended MAPI, it has no value set for DllPathEx.
- The stub library attempts to use Mapi32x.dll, which does not exist, and as a result displays the PreFirstRun message.
- A temporary resolution is to determine whether Outlook Express is the default mail client, and if it is, add a DllPathEx value to the registry as follows:HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Outlook Express::DllPathEx = %ProgramFiles%\Outlook Express\msoe.dllWARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.
Because Outlook Express implements and exports the BMAPIFunctions from Msoe.dll, setting DllPathEx allows the stub library to route calls to them. The danger in doing this is that a client that attempts to use Extended MAPI will receive an error (because Msoe.dll does not export the Extended MAPI functions) when it might instead have used Mapi32x.dll successfully.
- To force an application to use the Outlook Express implementation for all MAPI calls, create a new value under the following registry key:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem\MSMapiAppsSet the name of the value to the name of your application (such as MyApp.exe), and then set the value to Outlook Express. This bypasses the stub library and forces it to pass all MAPI calls, including the BMAPI calls, directly to Outlook Express.
รหัสบทความ: 315458 - การตรวจสอบครั้งสุดท้าย: 23 มี.ค. 2009 - ฉบับแก้ไข: 1