Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Posteingang vom zweiten Postfach
caldicot
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

Posteingang vom zweiten Postfach

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von caldicot am .
private Nachricht | Beiträge des Benutzers
caldicot
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von caldicot am .
private Nachricht | Beiträge des Benutzers