إضافة سجلات جديدة إلى قائمة التوزيع توقعات خاصة

StackOverflow https://stackoverflow.com/questions/375148

  •  22-08-2019
  •  | 
  •  

سؤال

ولست بحاجة لقراءة السجلات التي تحتوي على اسم والبريد الإلكتروني من ملف أو قاعدة بيانات وإضافتها إلى قائمة التوزيع عن oulook القائمة (من الأسماء خاصة، وليس من GAL).

ورأيت للتو أمثلة على القراءة من OL استخدام LINQ إلى DASL التي أشرت العمل للبريد والتعيينات، ولكن أنا لا يمكن معرفة كيفية سرد محتويات قائمة حي:

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

وعندما أستطيع أن أقرأ أعضاء أحتاج لتكون قادرة على إضافة مواقع جديدة والتي هي أكثر من ذلك خدعة. أي مساعدة سيكون موضع تقدير.

هل كانت مفيدة؟

المحلول

وتبين أنه من السهل بما فيه الكفاية. كنت ببساطة المفقودين الدعوة إلى حل كما اعتقدت أن كان فقط إذا كنت قد حسم ضد GAL:

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

وأنا يمكن أن تخلق مكرر يستخدم الأسلوب distList.GetMember:

و// التفاف DistListItem.GetMembers () كما مكرر

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);
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top