Freigeben über


Erstellen eines sendebaren Elements für ein bestimmtes Konto basierend auf dem aktuellen Ordner (Outlook)

Wenn Sie die CreateItem-Methode des Application-Objekts verwenden, um ein Microsoft Outlook-Element zu erstellen, wird das Element für das primäre Konto für diese Sitzung erstellt. In a session where multiple accounts are defined in the profile, you can create an item for a specific IMAP, POP, or Microsoft Exchange account. Wenn Sie bei mehreren Konten im aktuellen Profil ein versendbares E-Mailelement über die Benutzeroberfläche erstellen, indem Sie auf Neue E-Mail oder Neue Besprechung klicken, wird ein neues E-Mailelement oder einen Besprechungsanfrage im Erstellmodus angezeigt und Sie können das Konto auswählen, über das Sie das Element senden möchten. In diesem Thema wird erläutert, wie ein versendbares Element erstellt und über ein bestimmtes Konto gesendet wird. Das Thema enthält zwei Codebeispiele, die zeigen, wie ein MailItem - und ein AppointmentItem-Objekt für ein bestimmtes Konto erstellt werden, das vom aktuellen Ordner im aktiven Explorer bestimmt wird.

Der folgende verwaltete Code ist in C# geschrieben. Um ein verwaltetes Codebeispiel von .NET Framework auszuführen, das ein Component Object Model (COM) aufrufen muss, müssen Sie eine Interopassembly verwenden, die verwaltete Schnittstellen definiert und den COM-Objekten in der Object Model-Typbibliothek zuordnet. Für Outlook können Sie Visual Studio und die Outlook Primary Interop Assembly (PIA) verwenden. Stellen Sie sicher, dass Sie die Outlook 2013 PIA installiert und eine Referenz zur Microsoft Outlook 15.0-Objektbibliothekkomponente in Visual Studio hinzugefügt haben, bevor Sie verwaltete Codebeispiele für Outlook 2013 ausführen. Sie sollten den folgenden Code in der ThisAddIn Klasse eines Outlook-Add-Ins verwenden (mit Office Developer Tools für Visual Studio). Das Objekt der Anwendung im Code muss ein vertrauenswürdiges Outlook- Anwendungsobjekt sein, das von ThisAddIn.Globals bereitgestellt wird. Weitere Informationen zur Verwendung der Outlook-PIA zur Entwicklung verwalteter Outlook-Lösungen finden Sie auf MSDN unter Willkommen bei der Referenz zur primären Interopassembly von Outlook (PIA).

Die erste Methode unten, CreateMailItemFromAccount, erstellt ein MailItem-Objekt für ein bestimmtes Konto und zeigt es im Verfassenmodus an. Der Standardzustellspeicher des jeweiligen Kontos entspricht dem Speicher für den Ordner, der im aktiven Explorer angezeigt wird. The current user of the account is set as the sender. CreateMailItemFromAccount first identifies the appropriate account by matching the store of the current folder (obtained from the Folder.Store property) with the default delivery store of each account (obtained with the Account.DeliveryStore property) that is defined in the Accounts collection for the session. CreateMailItemFromAccount then creates the MailItem. Um das Element dem Konto zuzuordnen, weist den Benutzer des Kontos als Absender des Elements zu, CreateMailItemFromAccount indem das AddressEntry-Objekt für den Benutzer des Kontos auf die Sender-Eigenschaft des MailItem-Objekts festgelegt wird. Assigning the Sender property is the important step because otherwise, the MailItem is created for the primary account. At the end of the method, CreateMailItemFromAccount displays the MailItem. Note that if the current folder is not on a delivery store, CreateMailItemFromAccount simply creates the MailItem for the primary account for the 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); 
    } 
} 

Die nächste Methode, CreateMeetingRequestFromAccount, ähnelt CreateMailItemFromAccount mit der Ausnahme, dass sie ein AppointmentItem-Objekt anstelle eines MailItem erstellt und das AppointmentItem-Objekt dem Konto mithilfe seiner SendUsingAccount-Eigenschaft zuordnet. CreateMeetingRequestFromAccount erstellt ein AppointmentItem-Objekt im Kalenderordner eines Kontos, dessen Standardübermittlungsspeicher mit dem Speicher für den Ordner identisch ist, der im aktiven Explorer angezeigt wird. CreateMeetingRequestFromAccount first identifies the appropriate account by matching the store of the current folder (obtained from the Folder.Store property) with the default delivery store of each account (obtained with the Account.DeliveryStore property) that is defined in the Accounts collection for the session. CreateMeetingRequestFromAccount erstellt anschließend das AppointmentItem. Um das Element dem Konto zuzuordnen, weist dieses Konto als sendendes Konto des Elements zu, CreateMeetingRequestFromAccount indem das Account-Objekt auf die SendUsingAccount-Eigenschaft des AppointmentItem-Objekts festgelegt wird. Das Zuordnen der SendUsingAccount -Eigenschaft ist der entscheidende Schritt, da andernfalls das AppointmentItem für das primäre Konto erstellt wird. Am Ende der Methode zeigt CreateMeetingRequestFromAccount das AppointmentItem an. Beachten Sie, dass für den Fall, dass der aktuelle Ordner kein Übermittlungsspeicher ist, CreateMeetingRequestFromAccount einfach das AppointmentItem für das primäre Konto der Sitzung erstellt.

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); 
    } 
} 

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.