使用Java访问Exchange Web服务(EWS),我们只需要获取一个ExchangeService类的实例,注意:ExchangeService不是线程安全的类,因此每一个线程使用一个实例,代码如下:
//创建ExchangeService的对象
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
//创建凭证
ExchangeCredentials credentials = new WebCredentials("emailAddress","password");
//将凭证赋予service
service.setCredentials(credentials);
设置服务的url有俩种方式:
使用第一种手动设置的方法如下:
service.setUrl(new URI("EWS-URL"));
通过使用第二种的自动发现服务设置方法如下:
service.autodiscoverUrl("your mail address");
官方建议使用第二种,也就是使用自动发现服务,它的原因如下(英语能力有限,大概意思):
注意:手动设置和自动服务发现不能同时调用。
在EWS-JAVA-API种定义了Items的类和它对应得结构,每个类都映射到Exchange给定得Items类型中,例如:EmailMessage代表email的消息,Appointment代表日历活动和会议
下面这张图显示了EWS-JAVA-API的项目结构
Folders操作提供对Exchange数据存储中的文件夹的访问,客户端应用程序可以创建、更新、删除、复制、查找和获取并移动与邮箱用户关联的文件夹,EWS-JAVA-API也为Folders定义了类和它得结构,如图:
Items和Folders是Exchange中的唯一标识符,在EWS-JAVA-API中Items和Folders中有一个ID的属性作为Exchange的唯一标识符——(ItemId and FolderId)
如果你知道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.
}
代码如下:
Folder folder = Folder.bind(service, new FolderId(uniqueId));
您还可以绑定到一个已知的文件夹(收件箱、日历、任务等),而不需要知道它的ID。
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
由于目前项目中使用到得功能只为邮件得读取,所以就介绍到这里,如果哦还有发送得需求以及想更详细的了解可以访问它的官方文档。