2013-01-05 65 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(); 
}