使用CSOM管理SharePoint 2013列表邮件设置及迁移等效代码咨询
我完全理解你从Server OM迁移到CSOM时的困扰——这部分的官方文档确实不够清晰,找起来挺费劲的。下面是你需要的CSOM等效实现,分设置和检索两部分说明:
设置启用传入邮件并配置邮件别名
在CSOM中,启用列表接收邮件可以直接使用List.EnableReceiveEmail属性,但邮件别名EmailAlias需要通过列表的属性集合来设置,具体代码如下:
using (ClientContext clientContext = new ClientContext("your-site-url")) { // 获取目标列表 List targetList = clientContext.Web.Lists.GetByTitle("Your List Title"); // 启用列表接收邮件功能 targetList.EnableReceiveEmail = true; // 设置邮件别名 targetList.SetProperty("EmailAlias", "abc@abc.com"); // 提交更改到SharePoint服务器 targetList.Update(); clientContext.ExecuteQuery(); }
检索列表的邮件接收状态与别名
对应Server OM里的CanReceiveEmail和EmailAlias,CSOM中需要这样获取:
CanReceiveEmail直接对应List.EnableReceiveEmail布尔属性EmailAlias需要从列表的Properties集合中读取(因为它不是CSOM List类的直接公开属性)
具体代码:
using (ClientContext clientContext = new ClientContext("your-site-url")) { List targetList = clientContext.Web.Lists.GetByTitle("Your List Title"); // 按需加载所需属性(避免加载整个列表对象,提升性能) clientContext.Load(targetList, l => l.EnableReceiveEmail, l => l.Properties); clientContext.ExecuteQuery(); // 获取列表是否可接收邮件的状态 bool canReceiveEmail = targetList.EnableReceiveEmail; // 获取邮件别名(注意做空值判断,避免空引用异常) string emailAlias = targetList.Properties.ContainsKey("EmailAlias") ? targetList.Properties["EmailAlias"].ToString() : string.Empty; }
额外注意事项
- 确保操作账号拥有列表管理权限,否则会抛出权限不足的异常
- 不是所有列表类型都支持传入邮件(比如自定义列表、任务列表支持,文档库默认不支持),操作前需确认列表类型兼容性
内容的提问来源于stack exchange,提问作者Amar
相关产品推荐
相关产品推荐

