Laden...

E-Mail-aktivierte öffentliche Ordner ausschließlich mit "Microsoft.Office.Interop.Outlook" ermitteln.

Erstellt von pollito vor 5 Tagen Letzter Beitrag vor 5 Tagen 117 Views
pollito Themenstarter:in
321 Beiträge seit 2010
vor 5 Tagen
E-Mail-aktivierte öffentliche Ordner ausschließlich mit "Microsoft.Office.Interop.Outlook" ermitteln.

Hallo,

gibt es eine Möglichkeit, E-Mail-aktivierte öffentliche Ordner ausschließlich mit Microsoft.Office.Interop.Outlook zu ermitteln? EWS oder PowerShell sollten nicht verwendet werden. Das Programm soll auf dem Arbeitsplatz laufen und das installierte Outlook nutzen.

Wenn ich einen E-Mail-aktivierten öffentlichen Ordner gefunden habe, sollte ich die sich darin befindlichen E-Mails auflisten.

Bisher scheitere ich daran. Z. B. habe ich folgende Methode:

// Rekursive Methode zum Auflisten der E-Mail-Adressen der E-Mail-aktivierten öffentlichen Ordner
static void ListPublicFolders(Outlook.Folder? folder, string indent)
{
    if (folder != null)
    {
        foreach (object obj in folder.Folders)
        {
            if (obj is Outlook.Folder)
            {
                Outlook.Folder? subFolder = obj as Outlook.Folder;
                
                if (subFolder != null && subFolder.DefaultItemType == Outlook.OlItemType.olMailItem)
                {
                    Outlook.MAPIFolder? parentFolder = subFolder.Parent as Outlook.MAPIFolder;
                    string              parentName   = parentFolder != null ? parentFolder.Name : "Kein Elternordner gefunden";
                    
                    Console.WriteLine($"{indent}- {subFolder.Name}: {parentName}");
                    
                    if (parentFolder != null)
                    {
                        Marshal.ReleaseComObject(parentFolder);
                    }
                }
                
                ListPublicFolders(subFolder, indent + "  ");
                
                if (subFolder != null)
                {
                    Marshal.ReleaseComObject(subFolder);
                }
            }
        }
    }
}

Die Abfrage

if (subFolder != null && subFolder.DefaultItemType == Outlook.OlItemType.olMailItem)

scheitert daran, dasssubFolder.DefaultItemTypeden WertOutlook.OlItemType.olPostItemlliefert, obwohl der öffentliche Ordner als E-Mail-aktivierter Ordner in Exchange eingerichtet wurde.

Hier speziell handelt es sich um Microsoft 365. In der Exchange-Verwaltung habe ich bei der Erstellung explizit den Haken "E-Mail-aktiviert" gesetzt. Daraufhin erhalte ich zwei weitere Menüpunkte: "Delegierung" und "E-Mail-Eigenschaften".  In "E-Mail-Eigenschaften" kann ich einen Alias und einen Anzeigenamen angeben. Voreingestellt ist in beiden Feldern "Bestellungen". Nun erwarte ich, dass der öffentlicher Ordner E-Mail-aktiviert ist und dessen E-Mail-Adressebestellungen@domäne.tldlautet.

Ich verstehe nicht, warum Outlook den Ordner falsch behandelt (ich kann nur Postings erstellen und keine Mails verschicken).

Vielleicht kann mir jemand auf die Sprünge helfen.

Danke und viele Grüße,

René

René