This article was previously published under Q288775
This article has been archived. It is offered "as is" and will no longer be updated.
When you use MAPI or CDO to log on to an Exchange server, a dialog box prompts you for credentials. This dialog box has the caption "Enter Password" and fields for "User Name", "Domain Name", and "Password".
The account that the code is running under is in a domain that is not trusted by the Exchange Server's domain, or is not logged on to a domain at all.
MAPI and CDO rely on the Exchange Message Store (EMS) provider to communicate with Exchange. The EMS provider uses the credentials of the user that is currently logged on to establish a remote procedure call (RPC) connection with the Exchange server. If these credentials are insufficient to establish the RPC connection, the provider prompts the user for additional credentials. There is no way to pass credentials to the provider programmatically.
There are three ways to avoid this dialog box:
Join the domain in which the Exchange server is operating. In other words, run the code under an account that is in the Exchange server's domain.
Establish a trust relationship between the domain that your computer is running in and the domain of the other computer. If the two domains trust each other, they can exchange authentication information.
Use the SendKeys method or a similar method to fill in the blanks on the credentials dialog box. Note that this method is not recommended, because a subtle change in the layout of the dialog box may break it.
The last option is the equivalent of manually filling out the credentials dialog box. Note that because no authentication has yet taken place, there is no way to encrypt this information; therefore, it is transmitted as plain text to the Exchange Server.