2015-08-15 2 views
0

Je travaille actuellement sur le développement de l'API pour Outlook 2013 en C# et j'étais en train de créer un groupe de contact (datalist) lorsque j'ai rencontré un problème étrange .Outlook 2013 API ajout de contacts à un groupe de contacts créé par programme

J'ai réussi à créer un groupe de contacts en utilisant le code suivant, mais après la création, il apparaît que le groupe de contacts ne contient aucun contact.

Cependant, lors de l'inspection lors de la création du groupe et de l'ajout des contacts (filtre de doit avoir une adresse e-mail), je peux voir les contacts stockés dans l'affichage du groupe de contact avant d'être sauvegardé.

 Outlook.DistListItem distList = Application.CreateItem(Outlook.OlItemType.olDistributionListItem) as Outlook.DistListItem; 
     distList.Subject = "TEST GROUP"; 
     // grab all addresses such that primary email is not an empty string 
     string filter = "[Email1Address] <> ''"; 
     // grab the table of users 
     Outlook.Table table = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts).GetTable(filter, Outlook.OlTableContents.olUserItems); 
     // addingin email address so table must have column to represent this 
     table.Columns.Add("Email1Address"); 
     while (!table.EndOfTable) 
     { 
      Outlook.Row nextRow = table.GetNextRow(); 
      if (nextRow["Email1Address"] == null) 
      { 
       // no more addresses left to process. 
       break; 
      } 
      else 
      { 
       // create a recipient based upon information in our table 
       Outlook.Recipient recipient = Application.Session.CreateRecipient(nextRow["Email1Address"].ToString()); 
       // ensure recipient is valid by checking our address book for resolution 
       recipient.Resolve(); 
       MessageBox.Show(recipient.ToString() + "\nEOT: " + table.EndOfTable); 
       distList.AddMember(recipient); 
      } 
     } 
     // name the list? 
     distList.DLName = "Testing addin"; 
     // save the list 
     distList.Save(); 

Lorsque vous tentez d'envoyer un e-mail à ce groupe de contact, je suis invité avec le message d'erreur suivant:

Le groupe de contact (s) ce message est adressé à doit contenir au moins un destinataire.

+0

Êtes-vous sûr Recipient.Resolve() retourne vrai? –

+0

Oui, comme je les prends directement à partir de mon carnet de contacts, j'avais supposé qu'ils auraient résolu correctement, mais j'ai vérifié sur toutes les entrées et chacun revenait vrai. – Healsgood

Répondre

0

J'ai eu aucun problème exécutant le script suivant à partir OutlookSpy (cliquez sur le bouton Script sur le ruban OutlookSpy, collez le script, cliquez sur Exécuter):

set DL = Application.Session.GetDefaultFolder(olFolderContacts).Items.Add(olDistributionListItem) 
set Recip = Application.Session.CreateRecipient("[email protected]") 
Recip.Resolve 
DL.AddMember(Recip) 
DL.DLName = "Testing addin" 
DL.Save