根据these videos,看起来可以像使用Microsoft Graph API的Exchange在线邮箱一样,在混合设置中访问本地Exchange邮箱。
因此,我们有一个混合设置,其中的某些邮箱仅在本地。 OAuth适用于他们,我可以获得访问令牌。使用该令牌,当我点击https://graph.microsoft.com/v1.0/me/
时,便获得了用户的基本个人资料。
但是当我尝试通过以下任一端点来读取邮箱内容时:
https://graph.microsoft.com/v1.0/users/(email-address-here)/messages/
https://graph.microsoft.com/v1.0/me/messages/
我收到以下错误响应:
{
"error": {
"code": "ResourceNotFound",
"message": "Resource could not be discovered.",
"innerError": {
"request-id": "5d92ef93-e4d5-4610-acd0-a8d2d491d5ab",
"date": "2018-09-07T09:31:06"
}
}
}
我确定我们已经弄乱了混合动力设置的某个步骤,但不知道是哪一步。有人可以指出一些配置,我们应该仔细检查吗?可能是什么原因造成的?
用于生成访问令牌的范围包括Mail.Read
,我们的本地Exchange服务器版本是15.1.1531.3,根据this page上的表,它是Exchange Server 2016 CU10。
此外,如果我在浏览器中直接点击以下本地安装URL,它会要求我提供电子邮件和密码:
https://(myonprem.exchange.com)/api/v2.0/me/messages
当我提供它时,它以JSON格式返回邮箱内容,因此这意味着API在本地服务器上也可用。只是Microsoft Graph无法以某种方式找到它。
此Exchange Server安装在Azure上。因此,如果我可以通过家庭互联网连接访问其/api
虚拟目录,则Microsoft Graph也应该能够访问它。因此,它也不可能是防火墙问题。
我要指出的一件事是该服务器的出站电子邮件无法正常工作。我们进行混合设置的系统管理员告诉我,出站电子邮件所需的SMTP端口在Azure上被阻止。难道是我遇到问题的原因吗?
答案 0 :(得分:0)
感谢大家的评论。我们终于让它工作了。以下是我们的系统管理员发现并解决的一些问题: