博客地址:http://blog.csdn.net/FoxDave

上一篇文章我们实现了在.Net Core应用程序中去为用户分配一个许可的操作。本篇我们将实现更新用户Office 365中邮箱设置的操作。

获取并更新用户邮箱设置

准备一个新用户或现有的某个用户,我们可以更新他的时区、位置信息、工作时长等邮箱设置。为了保证篇幅,如何创建用户不在这里详述了。

我们可以使用Microsoft Graph的终结点/users/{id|userPrincipalName}|/mailboxSettings去访问用户的邮箱设置。获取邮箱设置的文档点击这里,更新邮箱设置的文档点击这里。

PS:点击更新邮箱设置的文档发现目前的标题是错误的,仍然是获取用户的邮箱设置,估计是翻译的时候不仔细。其实这样的问题还有很多,如果发现了果断给微软提出来啊,传送门。

跟之前示例的操作所需要的权限不同,读取和更新邮箱设置需要包括如下应用程序权限:User.Read.all, MailboxSettings.Read, MailboxSettings.ReadWrite。

可选项:还可以将Mail.Read应用程序权限也配置上,因为示例代码还演示了如何使用Microsoft Graph SDK来获取用户的收件箱。

我们就继续在之前创建的应用GraphTest上添加了。

配置完这些之后我们就要开始代码之旅了。

获取和设置用户邮箱默认的时区

下面的代码展示了帮助类的两个方法分别去获取和设置用户邮箱默认的时区。获取使用的是Microsoft Graph SDK,更精简一些。

public async Task<string> GetUserMailboxDefaultTimeZone(string alias)
{User user = FindByAlias(alias).Result;User detailedUser = await _graphClient.Users[user.Id].Request().Select("MailboxSettings").GetAsync();return detailedUser.MailboxSettings.TimeZone;
}
public async void SetUserMailboxDefaultTimeZone(string alias, string timezone)
{User user = FindByAlias(alias).Result;Uri Uri = new Uri("https://graph.microsoft.com/v1.0/users/"+ user.Id +"/mailboxSettings");String jsonContent = "{\"timeZone\" : \""+ timezone +"\"}";HttpContent httpContent = new StringContent(jsonContent, System.Text.Encoding.UTF8, "application/json");await _httpClient.PatchAsync(Uri, httpContent);
}

注意,设置用户默认时区的方法使用的是HttpClient而不是SDK,是由于到目前为止,SDK还没有支持更新邮箱设置的方法,因此设置方法同时使用了SDK和HttpClient,SDK用来查找用户,HttpClient用来更新邮箱设置。

帮助类的方法完成之后,我们就可以在Program.cs中通过下面的代码调用它们:

private static void GetUserMailboxDefaultTimeZone()
{const string alias = "admin";var mailboxHelper = new MailboxHelper(_graphServiceClient);var defaultTimeZone = mailboxHelper.GetUserMailboxDefaultTimeZone(alias).Result;Console.WriteLine("Default timezone: "+ defaultTimeZone);
}private static void SetUserMailboxDefaultTimeZone()
{const string alias = "admin";var mailboxHelper = new MailboxHelper(_graphServiceClient, _httpClient);mailboxHelper.SetUserMailboxDefaultTimeZone(alias, "Eastern Standard Time");
}

创建并获取用户邮箱消息规则 (Rules)

我们为MailboxHelper类添加额外的方法去展示如何使用Microsoft Graph SDK去获取用户的消息,创建并获取消息规则。下面的几个代码片段封装了创建和获取邮箱消息规则的部分。

private static MessageRule BuildMailRule(string displayName, int sequence, bool isEnabled, string senderContains, string forwardToEmail)
{IEnumerable<string> senderContainsList = new string[]{senderContains};EmailAddress email = new EmailAddress(){Address = forwardToEmail};Recipient recipient = new Recipient(){EmailAddress = email};IEnumerable<Recipient> recipientList = new Recipient[]{ recipient };var msgRule = new MessageRule{DisplayName = displayName,Sequence = sequence,IsEnabled = isEnabled,Conditions = new MessageRulePredicates{SenderContains = senderContainsList},Actions = new MessageRuleActions{ForwardTo = recipientList}};return msgRule;
}
public async Task CreateRule(string alias, string displayName, int sequence, bool isEnabled, string senderContains, string forwardToEmail)
{MessageRule rule = BuildMailRule(displayName, sequence, isEnabled, senderContains, forwardToEmail);User user = FindByAlias(alias).Result;await _graphClient.Users[user.Id].MailFolders.Inbox.MessageRules.Request().AddAsync(rule);
}

上面的代码使用BuildMailRule方法去创建一个新的MessageRule对象,然后使用SDK向用户邮箱添加这个规则。遗憾的是现在没有办法通过Graph删除规则。

public async Task<List<ResultsItem>> GetUserMailboxRules(string alias)
{User user = FindByAlias(alias).Result;IMailFolderMessageRulesCollectionPage rules = await _graphClient.Users[user.Id].MailFolders.Inbox.MessageRules.Request().GetAsync();List<ResultsItem> items = new List<ResultsItem>();if (rules?.Count > 0){foreach (MessageRule rule in rules){items.Add(new ResultsItem{Display = rule.DisplayName,Id = rule.Id});}}return items;
}

上面的方法使用SDK去获取消息规则并存储到集合中。

示例代码已更新,新增类ResultsItems.cs和MailboxHelper.cs,修改Program.cs,戳这里。

程序运行结果如下:

运行之后如何在验证结果呢?登录Office 365门户,点击右上角的齿轮设置图标,如下图的位置可以查看时区设置:

邮件的规则,可以在首页点击OutLook,然后点击右上角齿轮图标,最下面选择应用设置中的邮件,在邮件 - 自动处理 - 收件箱和整理规则位置可以看到添加的规则。

Microsoft Graph for Office 365 - 用例:更新用户邮箱设置相关推荐

  1. Microsoft Graph for Office 365 - 用例:Microsoft Teams相关的交互

    本篇我们介绍Microsoft Teams相关的内容. Microsoft Teams介绍 Microsoft Teams是用于企业沟通协作的软件,可以即时消息,语音通话,在线会议等.它以团队为基础单 ...

  2. Microsoft Graph for Office 365 - 认证和授权场景

    博客地址:http://blog.csdn.net/FoxDave 上一篇我们介绍了发起Microsoft Graph请求的核心:访问令牌.本篇我们探讨一下在使用Microsoft Graph进行查询 ...

  3. Microsoft Graph for Office 365 - 身份验证路线图和访问令牌

    博客地址:http://blog.csdn.net/FoxDave 本篇我们介绍并展望Microsoft Graph的身份验证状况,特别是获取访问令牌的部分. 任何对Microsoft Graph的请 ...

  4. 在Office 365 添加就地保留用户邮箱

    基于客户需求,要求将用户批量添加到Office 365中的现有就地保留.如您所了解的,我们可以通过Exchange在线图形用户GUI界面完成,也可以通过PowerShell完成. 要将用户批量添加到O ...

  5. 如何从Mac电脑中删除Microsoft AutoUpdate即office办公软件的更新提示

    如何从Mac电脑中删除Microsoft AutoUpdate即office办公软件的更新提示 想要从Mac删除Microsoft AutoUpdate吗? 也许您从Mac上卸载了Microsoft ...

  6. Office 365:如何删除和管理Microsoft Team (Office 365 Groups)Team Site

    博客地址:http://blog.csdn.net/shelleyliu0415 2016年年底,微软正式发布基于Office 365平台的一款高效提高团队沟通和交流的工具:Microsoft Tea ...

  7. Microsoft Defender for Office 365部署方案

    目录 前言 一.Microsoft Defender for Office 365 部署架构 1.部署环境 2.Microsoft Defender for Office 365 核心服务

  8. 如何为Office 365订阅的所有用户强制执行多因素身份验证

    Multi-Factor Authentication (MFA) is a great security tool, and we always recommend it. Office 365 a ...

  9. Office 365和SFB更新

    Office 365概述: Microsoft Teams 产品 中国区: SFB online SFB 本地部署 区别 网络环境:考虑公网带宽 企业语音:SFB online 不支持 国际版中-E5 ...

最新文章

  1. cnn stride and padding_卷积神经网络(CNN) 第 4 课(上)
  2. 【风控模型】融合模型Bagging构建信用评分卡模型
  3. 奖金+大赛入门,来参加我们的论文有奖复现!
  4. [数据结构与算法] 单链表的简单demo
  5. ble芯片 全称_蓝牙芯片都有哪些厂商?一文解答
  6. npm aes 加密(js aes 加密)
  7. 公司的高管,每天都在做什么?
  8. ~~Bellman-Ford算法
  9. mysql user.myd_“./mysql/user.MYD”未找到(ERRCODE:13 - 拒绝权限)
  10. 计算机网络线接法,电脑网线水晶头接法图解
  11. java mock私有方法_JMockit Mock 私有方法和私有属性
  12. hp39gs运行C语言,HP39GS 硬改添加Flash(w25q32)
  13. 机器学习5—分类算法之随机森林(Random Forest)
  14. Mysql :Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
  15. AE 图层分解与动画循环
  16. 史上最全的Android面试题集锦,大厂内部资料
  17. abaqus unable start analysis job
  18. Unity动态加载外部服务器上的FBX模型
  19. 每次开机都应用计算机配置,电脑win10每次重新开机设置都会还原怎么回事
  20. 2009年诺基亚中国开发伙伴峰会召开

热门文章

  1. Gson转换字符串为对象慢的问题
  2. STK 航空仿真(二)STK MATLAB自动化(1)自动化目的和方法简介
  3. 我的美女老板 6-12
  4. 2022年度回顾之显卡篇 (国产显卡迎来春天,RTX 4090大杀四方)
  5. 文件属性----解除锁定(Windows)
  6. 纪念碑谷3的开发支持
  7. php绕过d盾,巧用匿名函数绕过D盾
  8. 清洗完相机拍照测试年龄的软件,算年龄的照相软件 那个拍照测年龄的软件叫什么...
  9. SAP 预制发票凭证
  10. ElasticSearch搭建集群详解