我们使用SharePoint 2010 时,有时需要修改用户Email(邮箱) 地址,但是People and Groups 这个列表里面不允许我们修改。
本文介绍如何使用 Client Object Model 来修改用户Email(邮箱) 地址。
关于如何使用Moss 2010 Client Object Model,请参考 http://msdn.microsoft.com/en-us/library/ee857094.aspx#Y5816
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// init the ClientContext, please replace the website url with the moss 2010 site url you want to access
string siteUrl = "http://ccpc";
ClientContext clientContext = new ClientContext(siteUrl);
// Get the user info list of the web site
List userList = clientContext.Web.SiteUserInfoList;
clientContext.Load(userList);
clientContext.ExecuteQuery();
Console.WriteLine(userList.ItemCount);
// Get the fields of the list
FieldCollection fc = userList.Fields;
clientContext.Load(fc);
clientContext.ExecuteQuery();
// Print fc
foreach (Field field in fc)
{
Console.WriteLine(field.InternalName);
}
// Get the ListItem collection
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View> </View>";
ListItemCollection itemList = userList.GetItems(camlQuery);
// Only load the two fields(EMail and Name)
clientContext.Load(itemList,
items => items
.Include(
item => item["EMail"],
item => item["Name"]));
clientContext.ExecuteQuery();
// Print the email and user name
string messageTemplate = "Name ={0}, Email = {1}";
foreach (ListItem item in itemList)
{
string[] alias= item["Name"].ToString().Split("\\".ToCharArray());
Console.WriteLine(string.Format(messageTemplate, item["Name"], item["EMail"]));
// Update the user email, replace the james.com with your owner mail server adress
if (alias.Length == 2)
{
item["EMail"] = alias[1] + "@james.com";
}
else
{
item["EMail"] = alias[0] + "@james.com";
}
item.Update();
}
// submit the update
clientContext.ExecuteQuery();
Console.Read();
}
}
}