zoukankan      html  css  js  c++  java
  • SharePoint Get all users emal from SPUser objec

            public static string strLDAP = "LDAP://Test.com";
    
            public static void GetADMails(ref List<string> list, string strLoginName)
            {
                DirectoryEntry newEntry = new DirectoryEntry(strLDAP);
                strLoginName = strLoginName.Substring(strLoginName.LastIndexOf('\\') + 1);
                DirectorySearcher newSearcher = new DirectorySearcher(newEntry, "(&(objectClass=group)(CN=" + strLoginName + "))");
                SearchResult sr = newSearcher.FindOne();
                if (sr != null)
                {
                    foreach (string srUser in sr.GetDirectoryEntry().Properties["member"])
                    {
                        DirectoryEntry tmpEntry = new DirectoryEntry("LDAP://" + srUser);
                        if (tmpEntry.Properties["objectClass"][1].ToString() == "person")
                        {
                            if (string.IsNullOrEmpty(ConvertNull(tmpEntry.InvokeGet("Mail")).Trim()) || list.Contains(ConvertNull(tmpEntry.InvokeGet("Mail")).Trim()))
                            {
                                continue;
                            }
                            Console.WriteLine(tmpEntry.InvokeGet("Mail"));
                            list.Add(ConvertNull(tmpEntry.InvokeGet("Mail")).Trim());
                        }
                        else
                        {
                            GetADMails(ref list, tmpEntry.InvokeGet("sAMAccountName").ToString());
                        }
                    }
                }
                else
                {
                    newSearcher = new DirectorySearcher(newEntry, "(&(&(objectCategory=person)(objectClass=user))(cn=" + strLoginName + "))");
                    sr = newSearcher.FindOne();
                    if (sr != null)
                    {
                        object obj = sr.Properties["Mail"][0];
                        if (!(string.IsNullOrEmpty(ConvertNull(obj).Trim()) || list.Contains(ConvertNull(obj).Trim())))
                        {
                            list.Add(ConvertNull(obj).Trim());
                        }
                    }
                }
            }
    
            public static List<string> GetUserMailsByUserField(SPWeb web, object obj)
            {
                List<string> mailarr = new List<string>();
                SPGroup group = null;
                if (obj == null)
                {
                    return mailarr;
                }
                try
                {
                    SPFieldUserValueCollection approversCollection;
                    web.AllowUnsafeUpdates = true;
                    approversCollection = (SPFieldUserValueCollection)obj;
                    foreach (SPFieldUserValue spFieldUserValue in approversCollection)
                    {
                        if (spFieldUserValue.User == null)
                        {
                            //sharepoitn group 
                            try
                            {
                                group = web.SiteGroups[spFieldUserValue.LookupValue];
                                SPUserCollection users = group.Users;
                                foreach (SPUser user in users)
                                {
                                    if (user.ID == group.Owner.ID)
                                    {
                                        continue;
                                    }
                                    if (string.IsNullOrEmpty(ConvertNull(user.Email)))
                                    {
                                        continue;
                                    }
                                    if (mailarr.Contains(ConvertNull(user.Email).Trim()))
                                    {
                                        continue;
                                    }
                                    mailarr.Add(ConvertNull(user.Email).Trim());
                                }
                            }
                            catch { }
                        }
                        else
                        {
                            //sharepoint user or ad group
                            try
                            {
                                GetADMails(ref mailarr, web.AllUsers.GetByID(spFieldUserValue.LookupId).LoginName);
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                return mailarr;
    
            }


    List<string> maillist= GetUserMailsByUserField(web, item["Reader"]);

  • 相关阅读:
    R语言导入scv文件乱码问题及解决
    水论文而已,科研就交给恐龙吧
    R语言实现单因素方差分析带字母的显著性标记
    记录新的学习
    如果你的校园网连不上很有可能是因为IE代理服务出错导致无法上网
    git 补充
    git
    学习linux的菜鸟 shell脚本中的循环
    学习linux的菜鸟 shell脚本中的逻辑判断
    学习linux的菜鸟 shell脚本中的dat,计算器,内置变量的用法
  • 原文地址:https://www.cnblogs.com/gzh4455/p/3118361.html
Copyright © 2011-2022 走看看