使用ews-java-api 向exchange2007 创建会议时发生异常
代码如下:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
ExchangeCredentials credentials = new WebCredentials(username,
password);
service.setCredentials(credentials);
service.setUrl(new URI("https://"+demand+"/EWS/Exchange.asmx"));
Appointment appointment = new Appointment(service);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = formatter.parse("2015-06-17 18:00:00");
Date endDate = formatter.parse("2015-06-17 19:00:00");
appointment.setSubject("Status Meeting");
appointment.setBody(new MessageBody("The purpose of this meeting is to discuss status."));
appointment.setIsAllDayEvent(false);
appointment.setStart(startDate);
appointment.setEnd(endDate);
appointment.setLocation("room1");
appointment.getRequiredAttendees().add("meetingAdmin@***.com");
appointment.getOptionalAttendees().add("z***@****.com");
appointment.save();
异常如下:
microsoft.exchange.webservices.data.ServiceLocalException: StartTimeZone required when setting the Start, End, IsAllDayEvent, or Recurrence properties. You must load or assign this property before attempting to update the appointment.
at microsoft.exchange.webservices.data.Appointment.validate(Unknown Source)
at microsoft.exchange.webservices.data.CreateItemRequest.validate(Unknown Source)
at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(Unknown Source)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(Unknown Source)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.createItem(Unknown Source)
at microsoft.exchange.webservices.data.Item.internalCreate(Unknown Source)
at microsoft.exchange.webservices.data.Item.save(Unknown Source)
at SendMail2.send(SendMail2.java:166)
at SendMail2.send(SendMail2.java:173)
at SendMail2.main(SendMail2.java:42)
疑问:
该代码连接exchange2010没有问题 (即ExchangeVersion.Exchange2010).
百度N久后发现有人也有类似问题尝试了下他的代码也有同样的问题,增加的代码如下:
Collection<TimeZoneDefinition> t = service.getServerTimeZones();
TimeZoneDefinition tf = null;
for (TimeZoneDefinition timeZoneDefinition : t) {
tf = timeZoneDefinition;
appointment.setStartTimeZone(tf);
try{
appointment.save();
System.out.println(tf.getId()+" : "+tf.getName());
}catch (Exception e) {
}
}
希望大家不惜赐教,谢谢!