Question

Je dois lire les enregistrements contenant le nom et le courrier électronique à partir d'un fichier ou base de données et les ajouter à une liste de distribution de Oulook existante (des contacts privés, et non pas de la liste d'adresses globale).

Je viens de voir des exemples de la lecture de l'OL en utilisant LINQ à DASL que je travaille pour le courrier et les rendez-vous, mais je ne peux pas comprendre comment lister le contenu d'une liste dist:

private static void GetContacts()
    {
         Outlook.Application app = new Outlook.Application();
         Outlook.Folder folder = (Outlook.Folder)app.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
 var distLists = from item in folder.Items.AsQueryable<MyDistList>()
                 where item.DLName == "My Dist List"
                 select item.Item;

        var builder = new StringBuilder();

        foreach (var list in distLists)
        {
            builder.AppendLine(list.DLName);
            foreach (var item in list.Members)
            {
            // can't figure out how to iterate through the members here
            // compiler says Object doesn't have GeNumerator...
            }
        }

        Console.WriteLine(builder.ToString());
        Console.ReadLine();
    }

Une fois que je peux lire les membres que je dois être en mesure d'ajouter de nouvelles qui est encore plus d'un tour. Toute aide serait appréciée.

Était-ce utile?

La solution

Turns out il est assez facile. Je manque tout simplement l'appel à Décident je pensais que c'était que si vous résolvez contre la liste d'adresses globale:

Outlook.Recipient rcp = app.Session.CreateRecipient("Smith, John<j.smith@test.com>");
rcp.Resolve();
list.AddMember(rcp);
list.Save();

Et je peux créer un itérateur qui utilise la méthode distList.GetMember:

// Wrap DistListItem.GetMembers () comme iterator

public static class DistListItemExtensions
{
    public static IEnumerable<Outlook.Recipient> Recipients(this Outlook.DistListItem distributionList)
    {
        for (int i = 1; i <= distributionList.MemberCount; i++)
        {
            yield return distributionList.GetMember(i);
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top