2013-01-05 66 views
0
public void updateSignature(ExchangeService exchange, String signature) { 
    try { 
     FolderId f = new FolderId(WellKnownFolderName.Root); 
     UserConfiguration user = UserConfiguration.bind(exchange, 
       "OWA.UserOptions", f, UserConfigurationProperties.All); 

     if (user.getDictionary().containsKey("signaturetext")) 
      user.getDictionary().setElements("signaturetext", signature); 
     else 
      user.getDictionary().addElement("signaturetext", signature); 
     user.update(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

我得到user.update()的空指针异常;我可以在设置新的设置之前在控制台中打印旧的签名,也可以在字典中设置新的签名。但是,我无法永久更新这些更改。在此先感谢 。EWS签名更新错误

回答

0

其他代码使用root.parentFolderId而不是root。 也许是这个问题:

连接代码

static void SetSigniture(ExchangeService service) throws Exception { 
    Folder Root = Folder.bind(service, WellKnownFolderName.Root); 
    UserConfiguration OWAConfig = UserConfiguration.bind(service, "OWA.UserOptions", Root.getParentFolderId(), UserConfigurationProperties.All); 
    String hsHtmlSigniture = "<img src='http://www.baidu.com/img/baidu_jgylogo3.gif' />"; 
    String stTextSig = "Text sig"; 
    System.out.println(OWAConfig.getDictionary().getElements("timezone"));; 
    if (OWAConfig.getDictionary().containsKey("signaturehtml")) { 
     OWAConfig.getDictionary().setElements("signaturehtml", new Object()); 
    } else { 
     OWAConfig.getDictionary().addElement("signaturehtml", hsHtmlSigniture); 
    } 
    if (OWAConfig.getDictionary().containsKey("signaturetext")) { 
     OWAConfig.getDictionary().setElements("signaturetext", stTextSig); 
    } else { 
     OWAConfig.getDictionary().addElement("signaturetext", stTextSig); 
    } 
    OWAConfig.update(); 
}