https://docs.microsoft.com/zh-cn/exchange/client-developer/exchange-web-services/explore-the-ews-managed-api-ews-and-web-services-in-exchange

Exchange 提供 Exchange web 服务 (EWS) 和其他可用于实现访问和管理 Exchange 的客户端应用程序的 web 服务存储项目。Exchange Web Services (EWS) 是一个跨平台 API,使应用程序访问邮箱项目,如电子邮件、 会议和联系人。 EWS 应用程序可以在本地或远程通过 SOAP 基于 XML 邮件中发送的请求访问邮箱项目。这意味着,只要您的应用程序可以发布通过 HTTP 的 XML,它可以使用 EWS 访问 Exchange 之间发送的 HTTP 消息中。

EWS应用程序中的常见操作是获取有关电子邮件,约会,会议以及存储它们的文件夹的信息。此示例获取帐户收件箱中的邮件数,并显示邮件总数和未读邮件数。

EWS应用程序的另一个常见操作是发送电子邮件或会议请求。

EWS 应用程序和 Exchange 内部部署体系结构

EWS 应用程序和 Exchange Online 体系结构

当 EWS 应用程序请求从 Exchange 存储的信息时,符合标准的 SOAP XML 请求消息创建并发送到 Exchange 服务器中。 Exchange 服务器接收请求时,它验证客户端提供的凭据,并自动分析所请求的数据的 XML。 然后,服务器建立 SOAP 响应,其中包含代表请求的强类型的对象及其属性的 XML 数据。 XML 数据发送回 HTTP 响应中的应用程序。 应用程序然后 XML 反序列化和使用数据修订的强类型的对象。

EWS必须支持的协议和标准

EWS协议必须支持的认证标准

EWS应用程序类型

  • 客户端应用程序 - 使用EWS访问Exchange数据的独立应用程序。Outlook和Outlook Web App是客户端应用程序的示例。

  • 门户网站应用程序 - 通过包含从Exchange检索的信息(如忙/闲或联系信息)扩展现有网页的应用程序。检索Exchange数据的SharePoint Web部件是门户网站应用程序的示例。

  • 服务应用程序 - 用于将数据从Exchange集成或同步到现有系统的后台作业。例如,将Exchange中的联系人信息同步到CRM应用程序的应用程序。服务应用程序通常是内置于现有应用程序中的后台作业,该应用程序扩展到Exchange以关联系统与Exchange存储之间的数据。服务应用程序通常没有用户界面,并使用模拟或OAuth进行身份验证和访问。创建服务帐户以模拟用户在EWS服务应用程序中很常见,因为您可以授予单个帐户权限来模拟一组用户并为这些帐户执行邮箱操作。例如,EWS服务应用程序可以使用服务帐户和模拟来同步CRM解决方案和Exchange通讯组中的市场营销列表之间的数据。

开始使用EWS托管API客户端应用程序

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-managed-api-client-applications

EWS托管API提供了一个简单而功能齐全的界面,用于开发和扩展使用Exchange Web服务(EWS)的应用程序。无论您是使用Visual Studio还是其他代码编辑器来开发EWS托管API应用程序,都需要引用EWS托管API程序集。

EWS API文件下载地址:https://github.com/officedev/ews-managed-api

EWS服务URL调用

您可以通过多种方式在应用程序中设置EWS URL。我们建议您使用自动发现服务来获取URL,因为在大型服务器林中,如果将邮箱迁移到其他服务器,则URL可能会更改。但是,因为如果您需要在短时间内拨打多个电话,调用自动发现可能需要一些时间并且可能会降低您的应用程序速度,您可能希望缓存从自动发现获得的URL值并使用此方法手动设置EWS服务URL缓存的价值。这将改善您的应用程序的性能; 只需确保使用自动发现定期更新缓存值,以防服务器上的值发生更改。

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-set-the-ews-service-url-by-using-the-ews-managed-api

在VS中创建的第一个EWS调用API示例文件(达到调用EWS API发送邮件的效果)

using System;
using Microsoft.Exchange.WebServices.Data;
namespace HelloWorld
class Program
static void Main(string[] args)
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new WebCredentials("user1@contoso.com", "password");
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
service.AutodiscoverUrl("user1@contoso.com", RedirectionUrlValidationCallback);
EmailMessage email = new EmailMessage(service);
email.ToRecipients.Add("user1@contoso.com");
email.Subject = "HelloWorld";
email.Body = new MessageBody("This is the first email I've sent by using the EWS Managed API");
email.Send();
private static bool RedirectionUrlValidationCallback(string redirectionUrl)
// The default for the validation callback is to reject the URL.
bool result = false;
Uri redirectionUri = new Uri(redirectionUrl);
// Validate the contents of the redirection URL. In this simple validation
// callback, the redirection URL is considered valid if it is using HTTPS
// to encrypt the authentication credentials.
if (redirectionUri.Scheme == "https")
result = true;
return result;
  

用于委托和文件夹访问的EWS操作

Exchange Web服务(EWS)和EWS托管API提供有限数量的操作,您可以使用这些操作来管理Exchange Online上的帐户,作为Office 365的一部分的Exchange Online,或者从Exchange 2013开始的Exchange版本。您可以使用下图中显示的操作用于管理委托和设置其他帐户的文件夹访问权限。

如果您的应用程序需要对Exchange服务器上的帐户进行其他控制,则可以使用Exchange命令行管理程序cmdlet来管理帐户。您可以通过执行以下操作之一来调用Exchange命令行管理程序cmdlet:

  • 使用调用Exchange命令行管理程序cmdlet的C#或Visual Basic编写应用程序。您可以查看https://docs.microsoft.com/en-us/exchange/client-developer/management/exchange-management-shell

  • 使用Windows PowerShell和Windows PowerShell脚本调用Exchange命令行管理程序cmdlet。您可以查看https://docs.microsoft.com/en-us/powershell/exchange/exchange-server/exchange-management-shell?view=exchange-ps

EWS的认证方式

Exchange online推荐使用Oauth认证、如果是企业内网的话使用NTLM,如果Oauth和NTLM都不满足的话,还可以使用Basic。参考:https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/authentication-and-ews-in-exchange

Microsoft Graph Mail,Calendar和Contact REST API

混合部署中的Office 365,Exchange Online和Exchange Server提供了一种使用电子邮件,日历和联系人的新方法。Microsoft Graph Mail,Calendar和Contact REST API提供了一种功能强大,易于使用的方式来访问和操作Exchange数据。这些API基于开放标准:OAuth版本2.0用于身份验证,OData版本4.0和JSON用于数据抽象。这提供了以下优点:

由于这些API需要OAuth进行身份验证,因此您的应用程序不必处理或存储用户凭据。

OAuth可以为用户数据请求严格范围的权限。例如,您可以将应用程序设计为请求权限并只读取用户的日历。

DEMO文档

使用EWS托管API与EWS通信

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-communicate-with-ews-by-using-the-ews-managed-api

跟踪请求和响应以解决EWS托管API应用程序的故障

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-trace-requests-responses-to-troubleshoot-ews-managed-api-applications

开始使用EWS客户端应用程序

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-client-applications

控制对Exchange中EWS的访问

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-control-access-to-ews-in-exchange

验证EWS托管API的服务器证书

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-validate-a-server-certificate-for-the-ews-managed-api

使用OAuth验证EWS应用程序

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth

EWS自动发现Exchange

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/autodiscover-for-exchange

Outlook中的Outlook加载项和EWS

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/mail-apps-for-outlook-and-ews-in-exchange

更多内容请关注下方微信公众号:

转载于:https://blog.51cto.com/543925535/2351489

原文链接:http://blog.51cto.com/543925535/2351489 微软基于exchange服务器提供的web service所开发的API, 用于C#定制基于exchange的相关应用, 安装包内会安装32/64bit两个安装包, 使用时请根据操作手册复制相应的dll到特定项目 Exchange Web Service(EWS) 协议EWS是微软实现的一种客户端和服务器之间的交换信息的协议。Exchange Server提供了包括从电子邮件、会议安排、团体日程管理、任务管理、文档管理、实时会议和工作流等丰富的协作应用。 EWS是基于标准的web service, 使用HTTP+XML+SOAP来传输消息的。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: Java EwsApi地址: GitHub链接 Ews 官方说明文档 接口说明地址:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.exchange.webservices.data?view=exchange-ews-api c#版Api教程及... Exchange Web Services Managed API 1.0 大概是在微软在09年10月左右发布的目前国内的资料非常少,国外倒是还有一些比较好的资料。这是一篇入门级的文章,只希望能给园子里的朋友一个简要的介绍,具体的更详细的大家可以在MSDN里面找。 Exchange在2007之后提供了Exchange Web Service(EWS),它提供了一个访问Exchang... EWS将附件分为两组:文件附件和项目附件项目附件:附加到另一个强类型EWS项目的强类型EWS项目,例如电子邮件和日历项目。文件附件:任何文件,例如.txt,.jpg,.zip,.pdf,甚至是.msg文件。文件附件只有一些属性,其中一个属性是文件的base-64编码内容。引用附件:文件提供程序引用的任何附件,例如位于云中的文件。附件可以来自多个提供者。内联附件内联附件是一种特... 为了多端兼容,而且对C#不熟悉,还好网上还能搜索到部分Java的示例,所以使用Java接口进行二次开发。主要开发功能是获取用户的日历数据,同步到公司系统,方便查看统计数据。打开官方文档,发现全是C#的示例。 今天时间学习Exchangerapi,该类是JUC原子包中的类,通过单元测试代码把所有public api方法跑了一遍,大致了解了底层实现,初学乍练,有很多一知半解的地方,待后续有了深入理解再来补充 package test.java.util.concurrent; import java.util.concurrent.Exchanger; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutExce. 有时候我们需要使用程序来进行收发邮件, 传统的POP3/SMTP/IMAP等协议也正广泛的被使用着,有关这些协议的收发邮件代码网上一抓一大把~ 如果要用这些协议可以去别处看看. 我这里要谈的是使用Microsoft Exchange Sever来进行邮件的收发. 通过网上查找资料我找到了微软官方的Exchange Server Developer Center, 从中得知了可以使用 using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Net;using System.Text;using HPCalendarSyncToPT1.Common;using HPCalendarSyncToPT1.Exchange; name... 在网上查找Office365使用EWS简单发邮件的方法时,查到的也不适用,所以自己写一个特别简单的发邮件方法,当然其他的方法需要大家自己查找,如果我研究EWS下面的内容,我也会实时更新。首先需要安装EwsManagedApi.msi,然后找到安装后的文件夹下的两个dll。打开Visual studio 新建Windows 窗体应用程序(也可以是其他的新建 项目),然后引用Microsoft.Exch