C# 连接到office 365邮箱
我正在开发一个C#应用程序,它可以访问office 365中当前用户的邮箱,但无法通过身份验证阶段。 我用的是这个例子 这样的代码在连接本地Exchange邮箱时工作正常,但由于某些原因无法与office 365配合使用。我尝试使用此处提供的解决方案,结果相同: 基础架构描述: 我们公司使用混合Exchange设置:有些邮箱位于本地Exchange服务器上,有些已迁移到Office 365。我们还安装了Microsoft ADFS服务器,用于office 365身份验证。 当我在浏览器中打开OWA URL时,首先会将我重定向到我们的ADFS服务器,如果我使用的是域帐户,则会透明地重定向到,否则会要求我在我们的ADFS服务器上提供凭据 问题: 是否可以通过显式指定凭据(如代码示例中所示)来连接Office 365邮箱?或者我应该从我们的ADFS服务器获取令牌并使用它连接到Office 365吗?我还没有找到关于后一个的C#示例 我正在努力实现的目标:C# 连接到office 365邮箱,c#,office365,office365api,C#,Office365,Office365api,我正在开发一个C#应用程序,它可以访问office 365中当前用户的邮箱,但无法通过身份验证阶段。 我用的是这个例子 这样的代码在连接本地Exchange邮箱时工作正常,但由于某些原因无法与office 365配合使用。我尝试使用此处提供的解决方案,结果相同: 基础架构描述: 我们公司使用混合Exchange设置:有些邮箱位于本地Exchange服务器上,有些已迁移到Office 365。我们还安装了Microsoft ADFS服务器,用于office 365身份验证。 当我在浏览器中打开OW
如果您试图使用EWS API连接到Office 365邮箱,请查看以下内容: 您现在无法在EWS应用程序中使用基本身份验证(用户名和密码)连接到Office/Microsoft 365。Microsoft不再支持EWS for Exchange Online中的基本身份验证。建议您使用OAuth2.0获取令牌,并在EWS客户端中使用该令牌连接到Office 365 为此,您必须在Azure AD中注册应用程序以使用客户端凭据流。我使用控制台应用程序对此进行了POC。 这里是指向源代码和文档存储库的链接
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.UseDefaultCredentials = false;
//Specify login which works when connecting to Office 365 web UI
service.Credentials = new WebCredentials("office_365_login@domain", "password");
//would fail here with 401 unauthorised
service.AutodiscoverUrl("email_address", RedirectionUrlValidationCallback);
//As an alternative to autodiscover, I've tried to specify endpoint explicitly
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx")
EmailMessage email = new EmailMessage(service);
...//Set email info
//Would fail with 401 unauthorised
email.Send();