Laden...

Posteingang vom zweiten Postfach

Erstellt von caldicot vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.276 Views
C
caldicot Themenstarter:in
51 Beiträge seit 2010
vor 11 Jahren
Posteingang vom zweiten Postfach

Hi,

ich stehe mal wieder vor einem Problem.

Ich habe ein Outlook Addin mit VSTO für Outlook2010 geschrieben.
Das Addin verarbeitet die selektierte E-Mail und soll diese anschließend verschieben.

Wenn nur ein Postfach vorhanden ist, funktioniert das auch mit folgendem Code:


            Outlook.MAPIFolder inBox = 
                Globals.ThisAddIn.Application.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

Danach wird irgendwann die Move Methode des MailItems aufgerufen. Das glaube ich ist hier nicht relevant.

Das Problem tritt auf, wenn mehrere Postfächer existieren.
Es wird eine E-Mail aus dem Postfach 2 ausgewählt und verarbeitet. Es wird aber immer in den Ordner des Postfachs 1 verschoben.

Nach etwas Debuggen habe ich rausgefunden, dass die Methode ActiveExplorer noch das richtige Postfach (also in diesem Bsp Postfach 2) zurück gibt. Bei der Session Property wird aber immer das Postfach 1 verwendet.

Wie kann ich denn eine E-Mail innerhalb eines Postfachs verschieben?

Ich hoffe ihr versteht was ich meine.
Ich habe dazu auch leider nichts gefunden, sondern nur die oben genannte Möglichkeit, wie ich an den Posteingang-Ordner komme.

Danke
caldi

C
caldicot Themenstarter:in
51 Beiträge seit 2010
vor 11 Jahren

Hi,

so ich bin's nochmal.

Ich habe inzwischen selber eine Lösung gefunden.
Wenn ihr mal das selbe Problem haben solltet, ich habe es so gelöst:


using Outlook = Microsoft.Office.Interop.Outlook;

public static Outlook.MAPIFolder GetInbox()
{
            Outlook.Application app = Globals.ThisAddIn.Application;
            Outlook.MAPIFolder currentFolder = app.ActiveExplorer().CurrentFolder;
            Outlook.Account account = GetAccountForFolder(currentFolder);
            Outlook.MAPIFolder inbox = account.DeliveryStore.GetDefaultFolder (Outlook.OlDefaultFolders.olFolderInbox);
}

private static Outlook.Account GetAccountForFolder(Outlook.MAPIFolder folder)
{
            // Obtain the store on which the folder resides.
            Outlook.Store store = folder.Store;

            // Enumerate the accounts defined for the session.
            return
                Globals.ThisAddIn.Application.Session.Accounts.Cast<Outlook.Account>().FirstOrDefault(
                    account => account.DeliveryStore.StoreID == store.StoreID);
}

Die GetAccountForFolder Methode gibt's von MS. Ich habe die For Schleife mittels LINQ ausgedrückt.

Viele Grüße
caldi