EWS-JAVA-API的使用

使用Java访问EWS

使用Java访问Exchange Web服务(EWS),我们只需要获取一个ExchangeService类的实例,注意:ExchangeService不是线程安全的类,因此每一个线程使用一个实例,代码如下:

1.创建ExchangeService实例和凭证

//创建ExchangeService的对象
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
//创建凭证
ExchangeCredentials credentials = new WebCredentials("emailAddress","password");
//将凭证赋予service
service.setCredentials(credentials);

2.设置服务的URL

设置服务的url有俩种方式:

  1. 手动的设置url(如果你知道服务器的url或者事先通过自动发现服务确定了url可以使用此方法进行设置
  2. 使用自动发现服务

使用第一种手动设置的方法如下:

service.setUrl(new URI("EWS-URL"));

通过使用第二种的自动发现服务设置方法如下:

service.autodiscoverUrl("your mail address");

官方建议使用第二种,也就是使用自动发现服务,它的原因如下(英语能力有限,大概意思):

  1. 自动发现服务可以给用户确定一个最佳的端点(与用户邮箱服务器最近的端点);
  2. 随着管理员部署新的客户端访问服务器,EWS URL可能会更改

注意:手动设置和自动服务发现不能同时调用。

3.Items

在EWS-JAVA-API种定义了Items的类和它对应得结构,每个类都映射到Exchange给定得Items类型中,例如:EmailMessage代表email的消息,Appointment代表日历活动和会议

下面这张图显示了EWS-JAVA-API的项目结构

EWS-JAVA-API的使用_第1张图片

4.Folders

Folders操作提供对Exchange数据存储中的文件夹的访问,客户端应用程序可以创建、更新、删除、复制、查找和获取并移动与邮箱用户关联的文件夹,EWS-JAVA-API也为Folders定义了类和它得结构,如图:

EWS-JAVA-API的使用_第2张图片

Items和Folders是Exchange中的唯一标识符,在EWS-JAVA-API中Items和Folders中有一个ID的属性作为Exchange的唯一标识符——(ItemId and FolderId)

5.绑定一个存在的Item

如果你知道message的唯一标识符,那么可以像像下面这样去获取它的详细内容:

//通过ItemId唯一标识符来确定一条消息
EmailMessage message = new EmailMessage(service,new ItemId(id));
//获取这条消息的发件人
System.out.println(message.getSender().getName());

如果你不知道唯一标识符映射的具体类型,可以使用下面的代码:

Item item = Item.bind(service, new ItemId(uniqueId));

if (item instanceof EmailMessage) {
	//如果对应的类型是消息类型,获取消息发送者的name
	System.out.println(((EmailMessage)item).getSender().getName());
} else if (item instanceof Appointment) {
	// If the item is an appointment, write its start time.
	System.out.println(((Appointment)item).getStart()));
} else {
	// Handle other types.
}

6.绑定一个存在的Folder

代码如下:

Folder folder = Folder.bind(service, new FolderId(uniqueId));

您还可以绑定到一个已知的文件夹(收件箱、日历、任务等),而不需要知道它的ID。

Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);

由于目前项目中使用到得功能只为邮件得读取,所以就介绍到这里,如果哦还有发送得需求以及想更详细的了解可以访问它的官方文档。

你可能感兴趣的:(Java)