我有一個要求。我需要訪問公司特定域中的用戶電子郵件。我需要獲取該用戶的日曆並將其發佈到Web應用程序。我很疲憊,發現任何可以幫助我做到的API。公司使用的電子郵件客戶端是Thunder Bird,因此,具體而言,我需要從Thunder Bird爲特定用戶訪問日曆。任何人都可以告訴我一些這方面的建議。使用Java處理用戶電子郵件地址的日曆
回答
庫馬爾
你提的問題是非常unprecise(什麼樣的是提供電子郵件/日曆服務器?是否有一個LDAP域?等等)。我想你是在談論一箇舊的Exchange Server,因爲一些域和WebDAV和搜索時出現問題?但是我也許可以給你至少一點幫助,這可能會導致你已經在踐踏其他編碼器的路徑,所以你可能會找到一個簡單而快速的解決方案。
今天我完成了一個M $ Exchange 2003連接器作爲概念驗證。我告訴你,這是真的作爲一個學生,而我實習時很難。儘管如此,我研究並搜索,查詢和惹惱其他人,以獲得有用的API的提示,但沒有一個達到我的目的。
我發現一個很好用的小框架叫做Sardine WebDAV Client for Java。該項目非常輕量化,儘管瞭解WebDAV的工作方式很有幫助,即使是由於您始終可以看到的來源也是如此。
所有其他解決方案針對許多不同的MAPI CC++ Libs for Linux。對我來說這不是選擇。
那麼,我有什麼選擇?沒有直接訪問客戶Exchange 2k3服務器,但只有一個電子郵件帳戶。所以你們都可以原諒我,但是我發現通過OWA向E2k3服務器發出一個POST請求要容易得多,因爲它被激活,而不是嘗試使用一些重的lib支持的訪問方式。
也許這是你的有用 - 從OWA表單獲取表單字段信息並建立一個連接字符串,你發佈到服務器。也許這是一個可能給你一個想法的字符串。所以,你需要調用DLL這樣的:
HttpPost httpPost = new HttpPost("https://" + getUrl()
+ "/exchweb/bin/auth/owaauth.dll");
httpPost.setEntity(new StringEntity("destination=https%3A%2F%2F"
+ getUrl() + "%2Fexchange%2F&flags=0&username=" + getUser()
+ "&password=" + getPassword()
+ "&SubmitCreds=Log+On&trusted=4&flags=4", "UTF-8"));
如何做一個基於表單的身份驗證信息來自這裏:Exchange 2003 Forms-Based Authentication。正如你所看到的,我從瀏覽器中抓取了用於與E2k通信的Link。下一步很簡單 - 發送請求,並等待...
HttpResponse response = httpclient.execute(httpPost);
如果你得到的回報良好的反應,那麼你就可以過濾掉的會話ID。成功登錄後的下一步是搜索約會。因此,您應該通過向M $索取一些信息找到適當的方法來處理已建立的WebDAV連接:SEARCH Method
然後,您閱讀它可以執行的操作。我繼續使用着名的查找機器並詢問Searching Calendar Folders with WebDAV。
在此之後,你可以創建一個這樣的POST請求:
HttpPost hp = new HttpPost(
"https://owa.SERVER.de/exchange/USER/Calendar") {
@Override
public String getMethod() {
return "SEARCH";
}
};
現在你可以使用搜索方法。這很好,因爲您的程序已準備好發送請求。
hp.setEntity(new StringEntity(QUERY, ContentType.TEXT_XML));
HttpResponse response = httpclient2.execute(hp);
我知道這不是完美的解決方案。因爲有兩種情況讓我感到驚訝。首先:我檢索了一個會話ID,但只要將它保存在一個字段中,我不需要在任何地方重新使用它。其次:我需要調用另一個HttpClient。我現在無法解釋。如果我使用了與登錄相同的HttpClient,那麼所有請求都是徒勞的。這就是爲什麼我必須調用另一個HttpClient。
最後一個也是最困難的一步是查詢後面,因爲唯一的調試幫助是HTTP錯誤號和MSDN中的錯誤描述。對不起。那麼,這是真的很好。試用版和錯誤版後面有它。
private final static String QUERY = "<?xml version=\"1.0\"?><g:searchrequest
xmlns:g=\"DAV:\"><g:sql> Select \"DAV:href\", \"urn:schemas:calendar:dtstart\",
\"urn:schemas:calendar:dtend\", \"urn:schemas:mailheader:subject\",
\"urn:schemas:calendar:duration\" FROM Scope('SHALLOW TRAVERSAL OF
\"/exchange/USER/Calendar\"')</g:sql></g:searchrequest>";
這不是特別的查詢。我只是從另一個文檔交替它,並刪除了我不需要的所有東西。
我希望這可以幫助你一點。關於提供Thunderbird預約/日曆日期我不能說任何東西,因爲這仍然超出我的知識範圍。
最好的問候,晚安,
色嫫
- 1. 從電子郵件地址檢測:Google日曆用戶?
- 2. Powerbi用戶的電子郵件地址
- 3. 使用python處理動態電子郵件地址
- 4. java郵件 - 使用動態發件人電子郵件地址
- 5. CakePHP的:使用電子郵件地址和當用戶輸入自己的電子郵件地址的形式
- 6. 我在哪裏管理TFS用戶的電子郵件地址?
- 7. 使用Google Analytics(分析)的用戶的電子郵件地址
- 8. 試圖使用電子郵件地址
- 9. 選擇使用電子郵件地址
- 10. 如何使用GData檢索用戶的電子郵件地址?
- 11. 顯示LinkedIn的電子郵件地址用戶使用passportjs
- 12. 使用java發送每封電子郵件的日曆邀請
- 13. 日文/中文電子郵件地址?
- 14. 使用AngularFire獲取用戶電子郵件地址列表
- 15. 允許使用用戶名或電子郵件地址登錄
- 16. 使用Google OpenID獲取用戶電子郵件地址
- 17. 如何使用gmail java api獲取gmail用戶的電子郵件地址?
- 18. 使用PHP處理IMAP電子郵件
- 19. 使用Thymeleaf處理電子郵件html
- 20. 禁用地址的iOS電子郵件
- 21. 客戶電子郵件地址
- 22. Quickblox,發送電子郵件給新用戶以驗證電子郵件地址
- 23. 驗證電子郵件地址而不發送電子郵件給用戶
- 24. 當用戶輸入電子郵件地址時自動發送電子郵件
- 25. 處理已在使用的電子郵件地址 - Firebase身份驗證
- 26. 檢查重複的用戶帳戶和電子郵件地址
- 27. 使用C#中的郵件地址發送電子郵件
- 28. 如何發送電子郵件在asp.net使用C#到任何電子郵件地址使用Gmail地址
- 29. 使用java加密電子郵件地址
- 30. 登錄用的用戶名或電子郵件地址在PHP
感謝。我幾乎忘記感謝你的幫助。 – 2013-08-13 10:25:22