2011-01-06 15 views
1

Ich arbeite in 2 Addins (eine für Outlook 2007 und eine für Outlook 2010). Eines dieser Dinge, die diese Addins tun müssen, ist das Hinzufügen einer Kategorie zur Hauptkategorienliste (wenn diese Kategorie nicht bereits vorhanden ist). DieseWie füge ich eine Kategorie zur Hauptkategorienliste für mehrere Outlook-Konten hinzu?

ist, wie ich das tun:

NameSpace oNS = Application.GetNamespace("MAPI"); 
if (oNS.Categories[Resources.MyCategoryName] == null) 
    { 
    oNS.Categories.Add(Resources.MyCategoryName, OlCategoryColor.olCategoryColorOrange, OlCategoryShortcutKey.olCategoryShortcutKeyNone); 
    } 

Das Problem ist, dass, wenn ich 2 oder mehr E-Mail-Konten in Outlook, wird die neue Kategorie nur auf das erste Konto des Hauptkategorienliste hinzugefügt. Die Hauptkategorielisten der anderen Konten bleiben unverändert. Und mit "first account" meine ich den ersten Account, der in Outlook erstellt wurde.

Ich bekomme dieses Verhalten sowohl in Outlook 2007 und 2010. Kann mir jemand auf diesem einen helfen?

Danke.

Antwort

1

Sie können auf die kontospezifische Categories-Sammlung über den DeliveryStore des jeweiligen Kontos zugreifen.

var account = Application.Session.Accounts[0]; 
var categories = account.DeliveryStore.Categories; 

Wenn Sie für Ihr Konto suchen möchten, können Sie immer verwenden Linq

var account = Application.Session.Accounts.Cast<Account>() 
    .FirstOrDefault(a => a.ExchangeMailboxServerName == "contoso.com"); 
+0

Danke, das es tat. – Florin

+0

Hallo, funktioniert das wirklich für Outlook 2007? Ich erhalte den Fehler "AccessViolationException: _Versucht, geschützten Speicher zu lesen oder zu schreiben. Dies ist oft ein Hinweis darauf, dass anderer Speicher beschädigt ist ._" beim Zugriff auf den 'account.DeliveryStore'. Laut der [Kontoobjektdokumentation] (http://msdn.microsoft.com/en-us/library/bb176620 (v = office.12) .aspx) ist diese Eigenschaft nicht vorhanden. – Binus