2013-06-14 3 views
0

J'ai un fichier (un btmap appelé secretimage) que je veux joindre à un message lorsque l'utilisateur clique sur un bouton. Je voudrais utiliser Outlook pour cela.Joindre un fichier à un courrier électronique avec Outlook

donc ce que je l'ai fait:

using Outlook = Microsoft.Office.Interop.Outlook; 
private void cmdSend_Click(object sender, EventArgs e) 
    { 
      Outlook.Application app = new Outlook.Application(); 
      Outlook.MailItem mail = new Outlook.MailItem(); 
      Outlook.Attachment attach = mail.Attachments.Add(secretImage, Outlook.OlAttachmentType.olByValue, 0, "Secret message"); 
    } 

Bien que cela me donne l'erreur suivante:

Récupération de l'usine de classe COM pour le composant avec CLSID { 00061033-0000-0000-C000 -000000000046} a échoué en raison de l'erreur suivante: 80040154 Non enregistré (Exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

La dernière partie est l'allemand, je ne sais pas pourquoi, en fait j'ai mis la langue à l'anglais. "Klasse nicht registriert" signifie "Classe non enregistrée". J'ai essayé de faire ce qui est recommandé ici: Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154

Quelqu'un peut-il m'aider ici? Je suis vraiment coincé. Essayez ce swap votre article de courrier pour ce code, pris à partir de ce lien.

+0

Y a-t-il une raison pour laquelle vous n'utilisez pas l'API Exchange Web Services? –

+0

Eh bien, c'est plus une pratique et j'aimerais le faire de cette façon si possible. – tomet

+0

L'un des problèmes que vous allez rencontrer avec cette méthode est qu'Outlook a mis en place des mesures de sécurité dans lesquelles vous devez autoriser l'envoi d'une application en votre nom. Il vous demandera et il n'y a aucun moyen de par défaut cette réponse sans utiliser un logiciel écrit spécifiquement pour supprimer ce message et y répondre pour vous. Ce n'est pas idéal pour envoyer des emails. Je suggérerais d'utiliser des services Web Exchange ou de permettre à une machine d'être SMTP et d'utiliser l'espace de noms System.Net.Mail. Cependant, vous pouvez utiliser le code que j'ai fourni ci-dessous pour le faire et j'ai testé et cela fonctionne. – Bearcat9425

Répondre

0

80040154 Class not registered ERROR in Outlook 2010 Add In

Microsoft.Office.Interop.Outlook.MailItem mail= app.CreateItem((OlItemType.olMailItem)); 

L'un des problèmes que vous allez rencontrer avec cette méthode est qu'Outlook des mesures de sécurité en place où vous devez permettre une application d'envoyer en votre nom. Il vous demandera et il n'y a aucun moyen de par défaut cette réponse sans utiliser un logiciel écrit spécifiquement pour supprimer ce message et y répondre pour vous. Ce n'est pas idéal pour envoyer des emails. Je suggérerais d'utiliser des services Web Exchange ou de permettre à une machine d'être SMTP et d'utiliser l'espace de noms System.Net.Mail. Comment vous pouvez utiliser ce code que j'ai fourni pour le faire et j'ai testé et cela fonctionne.

+0

Est-ce que la variable secretImage pointe vers un nom de fichier complet? –

+0

J'ai rencontré le même problème avec la bibliothèque d'objets Outlook 16.0. Vous penseriez qu'ils auraient mis à jour les choses et fait COM/.net travailler ensemble en harmonie maintenant! –

Questions connexes