2017-06-19 1 views
0

J'ai une fonction pour copier un e-mail dans un sous-dossier, en appliquant également une catégorie en cas de pièces jointes multiples.Liaison sur un message copié

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"); 
} 

étant SetCategory une méthode simple d'extension:

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

Le problème est que lorsque je tente d'exécuter la méthode SetCategory sur l'élément CopiedMessage, je reçois toujours un objet StringList vide, peu importe combien de catégories existantes que le message a déjà. Si j'essaie d'appeler la méthode sur le message d'origine, cela fonctionne comme prévu, donc je suppose que je rencontre des difficultés pour lier le message copié. J'ai utilisé this how-to article on MSDN pour la partie copie.

Répondre

0

j'ai changé

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

dans

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

Je pensais que la liaison lierait le nouvel objet à l'élément tout , mais je suppose que ce n'est pas comment cela fonctionne.