2012-10-12 136 views
16

tengo una aplicación que llama¿Por qué recibo una excepción de la biblioteca de Outlook de Office?

Email hello = new Email(appropriate constructor); 
hello.Email_Send(); 

que estoy recibiendo la excepción:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

de System.Runtime.InteropServices.COMException.

using O = Microsoft.Office.Interop.Outlook;  
class Email 
{ 
    public void Email_Send() 
    { 
     O.Application outlook = new O.Application(); //Exception thrown here. 
     O.MailItem message = outlook.CreateItem(O.OlItemType.olMailItem); 
     message.To = Receiver; 
     message.CC = Sender; 
     message.Subject = Subject; 
     message.Body = "This is an automated message sent at " + DateTime.Now.ToString("HH:mm:ss") + " about " + Body_Topic + System.Environment.NewLine + Body_Content ; 
     message.Send(); 
    } 
} 

Este error nunca ha ocurrido anteriormente, y no ha habido ningún cambio en el código que conozco. http://support.microsoft.com/kb/825118 no parece ajustarse a mis síntomas: mi computadora no deja de responder, etc. ¡Cualquier ayuda para diagnosticar el problema sería muy apreciada!

+4

Este error fue causado por Visual Studio que se ejecuta como administrador. Outlook no permite que usuarios separados accedan al mismo buzón (tuve la aplicación de Outlook abierta en el escritorio). Aunque tengo acceso de administrador local con mi usuario de dominio, ¿debo ejecutar VS como administrador para asociar el proceso a un objeto de usuario diferente? No estoy seguro de cómo funciona esto, pero ... Se resolvió. – Zee

+0

Por favor, publique su comentario como respuesta para que otros puedan beneficiarse. – SliverNinja

Respuesta

55

Este error fue causado por Visual Studio que se ejecuta como administrador. Outlook no permite que usuarios separados accedan al mismo buzón (tuve la aplicación de Outlook abierta en el escritorio). Aunque tengo acceso de administrador local con mi usuario de dominio, ¿debo ejecutar VS como administrador para asociar el proceso a un objeto de usuario diferente? No estoy seguro de cómo funciona esto, pero ... Se resolvió.

+0

este problema se ha resuelto pero aparece un nuevo error – Meer

+0

No se ha podido convertir el objeto COM del tipo 'System .__ ComObject' al tipo de interfaz 'Microsoft.Office.Interop.Outlook.Application'. Esta operación falló porque la llamada QueryInterface en el componente COM para la interfaz con IID '{00063001-0000-0000-C000-000000000046}' falló debido al siguiente error: Biblioteca no registrada. (Excepción de HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)). – Meer

+1

Cuando cerramos la instancia en ejecución de Outlook, funciona como un amuleto. Ahora la pregunta, que presumo que debe ir en otra pregunta de Stack Overflow, es saber cómo hacer que funcione incluso si Outlook se está ejecutando. –

0

Me encontré con el mismo problema, y ​​como se dijo anteriormente: si Visual Studio se ejecuta como administrador, Outlook impide otra instancia con un usuario diferente. Mi solución VS está iniciando varios proyectos, y necesito que se ejecute como administrador, por lo que lo que hice fue ejecutar Outlook como administrador durante la depuración. Esto resolvió mi problema.

Cuestiones relacionadas