none
Utilisation de la bibliothèque Microsoft.Office.Interop.Outlook en c# RRS feed

  • Question

  • Bonjour,

    J'ai testé un code écrit en c# sur Visual Studio sensé donner l'arborescence d'Outlook (dossiers, sous dossiers,...) 

    Le voici : 

    using System;
    using System.Diagnostics;
    using System.Linq;
    using System.Reflection;
    using System.Runtime.InteropServices;
    using Microsoft.Office.Interop.Outlook;
    
    namespace OutlookAddIn1
    {
        class Sample
        {
            Outlook.Application GetApplicationObject()
            {
    
                Outlook.Application application = null;
    
                // Check whether there is an Outlook process running.
                if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
                {
    
                    // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                    application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
                }
                else
                {
    
                    // If not, create a new instance of Outlook and sign in to the default profile.
                    application = new Outlook.Application();
                    Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
                    nameSpace.Logon("", "", Missing.Value, Missing.Value);
                    nameSpace = null;
                }
    
                // Return the Outlook Application object.
                return application;
            }
            private void EnumerateFoldersInDefaultStore()
            {
                Outlook.Folder root =
                    Application.Session.
                    DefaultStore.GetRootFolder() as Outlook.Folder;
                EnumerateFolders(root);
            }
    
            // Uses recursion to enumerate Outlook subfolders.
            private void EnumerateFolders(Outlook.Folder folder)
            {
                Outlook.Folders childFolders =
                    folder.Folders;
                if (childFolders.Count > 0)
                {
                    foreach (Outlook.Folder childFolder in childFolders)
                    {
                        // Write the folder path.
                        Debug.WriteLine(childFolder.FolderPath);
                        // Call EnumerateFolders using childFolder.
                        EnumerateFolders(childFolder);
                    }
                }
            }
    
        }
    }

    Mais j'ai le message d'erreur "le nom ou type d'espace de noms n'existe pas dans l'espace de noms 'Microsoft.Office.Interop' (vous manque t-il une directive using ou une référence d'assembly ?)"

    Mais quand j'essaye d'ajouter une référence COM en plus au projet et que je valide, elle se décoche toute seule après....

    Quelqu'un a des pistes ?

    vendredi 3 juillet 2020 07:29

Réponses