Créer un élément pouvant être envoyé pour un compte spécifique basé sur le dossier actif (Outlook)

Lorsque vous utilisez la méthode CreateItem de l’objet Application pour créer un élément Microsoft Outlook, l’élément est créé pour le compte principal de cette session. Dans une session où plusieurs comptes sont définis dans le profil, vous pouvez créer un élément pour un compte IMAP, POP ou Microsoft Exchange spécifique. Si le profil actif contient plusieurs comptes et que vous créez un élément prêt à l'envoi dans l'interface utilisateur, par exemple, en cliquant sur Nouveau message électronique ou sur Nouvelle réunion, un inspecteur affiche un nouvel élément de courrier ou une demande de réunion en mode composition, et il ne vous reste plus qu'à sélectionner le compte depuis lequel envoyer l'élément. Cette rubrique explique comment créer un élément à envoyer avec un programme et l’envoyer à l’aide d’un compte d’envoi spécifique. La rubrique contient deux exemples de code qui montrent comment créer un objet MailItem et un objet AppointmentItem pour un compte spécifique déterminé par le dossier actif dans l’explorateur actif.

Le code managé suivant est écrit dans C#. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio. Vous devez utiliser le code suivant dans la ThisAddIn classe d’un complément Outlook (à l’aide des Outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.

La première méthode ci-dessous, CreateMailItemFromAccount, crée un objet MailItem pour un compte spécifique et l’affiche en mode composition ; le magasin de remise par défaut du compte spécifique est identique à celui du dossier affiché dans l’explorateur actif. L’utilisateur actif du compte est défini comme l’expéditeur. CreateMailItemFromAccount Identifie d’abord le compte approprié en faisant correspondre le magasin du dossier actif (obtenu à partir de la propriété Folder.Store ) au magasin de remise par défaut de chaque compte (obtenu avec la propriété Account.DeliveryStore ) défini dans la collection Accounts pour la session. CreateMailItemFromAccount crée ensuite l’objet MailItem. Pour associer l’élément au compte, CreateMailItemFromAccount affecte l’utilisateur du compte en tant qu’expéditeur de l’élément en définissant l’objet AddressEntry de l’utilisateur du compte sur la propriété Sender de l’objet MailItem. L’affectation de la propriété Sender est une étape importante, car sans elle l’élément MailItem est créé pour le compte principal. À la fin de la méthode, CreateMailItemFromAccount affiche l’objet MailItem. Notez que si le dossier actif ne se trouve pas dans un magasin de remise, CreateMailItemFromAccount crée simplement l’objet MailItem pour le compte principal de la session.

private void CreateMailItemFromAccount() 
{ 
    Outlook.AddressEntry addrEntry = null; 
 
    // Get the store for the current folder. 
    Outlook.Folder folder = 
        Application.ActiveExplorer().CurrentFolder  
        as Outlook.Folder; 
    Outlook.Store store = folder.Store; 
     
    Outlook.Accounts accounts = 
        Application.Session.Accounts; 
 
    // Match the delivery store of each account with the  
    // store for the current folder. 
    foreach (Outlook.Account account in accounts) 
    { 
        if (account.DeliveryStore.StoreID ==  
            store.StoreID) 
        { 
            addrEntry = 
                account.CurrentUser.AddressEntry; 
            break; 
        } 
    } 
 
    // Create MailItem. Account is either the primary 
    // account or the account with a delivery store 
    // that matches the store for the current folder. 
    Outlook.MailItem mail = 
        Application.CreateItem( 
        Outlook.OlItemType.olMailItem) 
        as Outlook.MailItem; 
 
    if (addrEntry != null) 
    { 
        //Set Sender property. 
        mail.Sender = addrEntry; 
        mail.Display(false); 
    } 
} 

La méthode suivante, CreateMeetingRequestFromAccount, est similaire à CreateMailItemFromAccount , sauf qu’elle crée un objet AppointmentItem au lieu d’un objet MailItem et associe l’objet AppointmentItem au compte à l’aide de sa propriété SendUsingAccount . CreateMeetingRequestFromAccount crée un objet AppointmentItem dans le dossier Calendrier d’un compte dont le magasin de remise par défaut est identique à celui du dossier affiché dans l’explorateur actif. CreateMeetingRequestFromAccount Identifie d’abord le compte approprié en faisant correspondre le magasin du dossier actif (obtenu à partir de la propriété Folder.Store ) avec le magasin de remise par défaut de chaque compte (obtenu avec la propriété Account.DeliveryStore ) défini dans la collection Accounts pour la session. CreateMeetingRequestFromAccount crée ensuite l’objet AppointmentItem. Pour associer l’élément au compte, CreateMeetingRequestFromAccount attribue ce compte comme compte d’envoi de l’élément en définissant l’objet Account sur la propriété SendUsingAccount de l’objet AppointmentItem. L’affectation de la propriété SendUsingAccount est l’étape importante, car sinon, l’objet AppointmentItem est créé pour le compte principal. À la fin de la méthode, CreateMeetingRequestFromAccount affiche l’objet AppointmentItem. Notez que si le dossier actif ne se trouve pas dans un magasin de remise, CreateMeetingRequestFromAccount crée simplement l’objet AppointmentItem pour le compte principal de la session.

private void CreateMeetingRequestFromAccount() 
{ 
    Outlook.Account acct = null; 
 
    // Get the store for the current folder. 
    Outlook.Folder folder = 
        Application.ActiveExplorer().CurrentFolder 
        as Outlook.Folder; 
    Outlook.Store store = folder.Store; 
 
    Outlook.Accounts accounts = 
        Application.Session.Accounts; 
 
    // Match the delivery store of each account with the  
    // store for the current folder. 
    foreach (Outlook.Account account in accounts) 
    { 
        if (account.DeliveryStore.StoreID == 
            store.StoreID) 
        { 
            acct = account; 
            break; 
        } 
    } 
  
    // Create AppointmentItem. Account is either the primary 
    // account or the account with a delivery store 
    // that matches the store for the current folder. 
    Outlook.AppointmentItem appt = 
        Application.CreateItem( 
        Outlook.OlItemType.olAppointmentItem) 
        as Outlook.AppointmentItem; 
 
    appt.MeetingStatus =  
        Outlook.OlMeetingStatus.olMeeting; 
    if (acct != null) 
    { 
        //Set SendUsingAccount property. 
        appt.SendUsingAccount=acct; 
        appt.Display(false); 
    } 
} 

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.