2017-06-19 8 views
0

Ich habe eine Funktion, um eine E-Mail-Nachricht in einen Unterordner zu kopieren, wobei im Falle mehrerer Anhänge auch eine Kategorie angewendet wird.An eine kopierte Nachricht binden

void CopyInSubfolder(EmailMessage email, bool categorize) 
{ 
    PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.ParentFolderId); 
    Item item = email.Copy(_subFolder); 
    EmailMessage copiedMessage = EmailMessage.Bind(service, item.Id, propSet); 
    if (categorize) 
     copiedMessage.SetCategory("MULTIPLE ATTACHMENTS"); 
} 

ist SetCategory eine einfache Erweiterung Methode:

public static void SetCategory(this EmailMessage pContainer, string pCategory) 
{ 
    StringList ExistingCategories = pContainer.Categories; 
    if(!ExistingCategories.Contains(pCategory)) 
    { 
     ExistingCategories.Add(pCategory); 
    } 
    pContainer.Update(ConflictResolutionMode.AutoResolve); 
} 

Das Problem ist, dass, wenn ich versuche, die SetCategory Methode auf dem CopiedMessage Artikel zu laufen, habe ich immer ein leeres StringList Objekt erhalten, unabhängig davon, wie viele bestehende Kategorien, die die Nachricht bereits hat. Wenn ich versuche, die Methode für die ursprüngliche Nachricht aufzurufen, funktioniert sie wie vorgesehen. Daher habe ich Probleme mit der kopierten Nachricht. Ich habe this how-to article on MSDN für den Kopierteil verwendet.

Antwort

0

Ich änderte

PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.ParentFolderId) 

in

PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Categories) 

ich zum ganzen Artikeln das neue Objekt binden würde dachte verbindlich, aber ich denke, das ist nicht, wie es funktioniert.

Verwandte Themen