2017-03-28 2 views
0

Tout en essayant d'ouvrir Outlook pour la pièce jointe dans le courrier, via le site Web IIS asp.net a cette erreur. Affectez IIS USR et le réseau avec des autorisations complètes dans DCOMCnfg au composant Microsoft OutLook mais rien ne fonctionne.La récupération de la fabrique de classe COM pour le composant a échoué. L'accès est refusé. HRESULT: 0x80070005 E_ACCESSDENIED

La récupération de la fabrique de classe COM pour le composant avec CLSID {0006F03A-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante: 80070005 L'accès est refusé. (Exception de HRESULT: 0x80070005 (E_ACCESSDENIED)).

using System; 
using Outlook = Microsoft.Office.Interop.Outlook; 

// Create the Outlook application. 
       Outlook.Application oApp = new Outlook.Application(); 
       // Create a new mail item. 
       Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
       // Set HTMLBody. 
       //add the body of the email 
       oMsg.HTMLBody = "Hello, This is test for sending pdf attachment using OutLook"; 
       //Add an attachment. 
       String sDisplayName = "MyAttachment"; 
       int iPosition = (int)oMsg.Body.Length + 1; 
       int iAttachType = (int)Outlook.OlAttachmentType.olByValue; 
       //now attached the file 
       Outlook.Attachment oAttach = oMsg.Attachments.Add(Server.MapPath("~/TestSendFile.pdf"), iAttachType, iPosition, sDisplayName); 
       //Subject line 
       oMsg.Subject = "Your Subject will go here."; 
       // Add a recipient. 
       Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients; 
       // Change the recipient in the next line if necessary. 
       Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("[email protected]"); 
       oRecip.Resolve(); 
       // Send. 

       oMsg.Display(); 

Répondre

2

Le modèle d'objet Outlook (comme toute autre application Office) ne peut pas être utilisé à partir d'un service (tel que IIS). Plus que cela, vous essayez d'afficher un message sur le serveur côté où personne ne le verra jamais.

Vous pouvez utiliser

  1. Exchange Web Services (dans le cas d'une boîte aux lettres Exchange)

  2. MAPI étendu (C++ ou Delphi uniquement)

  3. Redemption - elle enveloppe MAPI étendue et son RDO family of objects peut être utilisé à partir d'un service. Il peut être utilisé à partir de n'importe quelle langue, y compris C#.

Si vous tentez d'afficher un message sur le côté client, vos choix sont

  1. mailto url - ne permet pas de HTML ou des pièces jointes
  2. Utiliser modèle d'objet Outlook à partir du client côté Java Script. Votre site doit être approuvé et vous ne pouvez utiliser que COM dans IE.
  3. Générer un fichier EML (MIME) et fournir un lien vers celui-ci - Outlook sera heureux d'ouvrir à partir du navigateur et de l'afficher.
+0

HI Dmitry, pouvez-vous s'il vous plaît me montrer un exemple de travail ou un lien avec elle? J'essaye ceci sur mon emplacement de localhost et assigné chaque droit possible mais même erreur. Serait très reconnaissant si c'est possible. – Ammad

+0

Exemple de quoi? Laquelle des 6 options ci-dessus? –