使用ews-java-api 向exchange2007 创建会议时发生异常

zn85600301 2015-06-18 11:14:14
代码如下:
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) {
}
}

希望大家不惜赐教,谢谢!
...全文
450 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
三观心 2017-02-28
  • 打赏
  • 举报
回复
找了好久最后,修改jar包不进行失去校验解决问题,成功新建会议。 /microsoft/exchange/webservices/data/Appointment.java 》》 protected void validate() 改成 protected void validate() throws Exception { super.validate(); }
WangSongYuan 2016-01-22
  • 打赏
  • 举报
回复
楼主还在吗 这个问题解决了吗
zn85600301 2015-06-19
  • 打赏
  • 举报
回复
再顶一下!!
zn85600301 2015-06-18
  • 打赏
  • 举报
回复
对了, 如果是发送email或者从exchange2007上收信都没有问题,唯独发送会议时会出现问题!?
zn85600301 2015-06-18
  • 打赏
  • 举报
回复
现在Java版这么冷清

50,499

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧