使用Java用户电子邮件地址的Acessing日历(Acessing calendar of use

2019-09-28 19:40发布

我有一个要求。 我需要访问用户的电子邮件是对公司的具体领域。 我需要得到该用户的日历,并将其发布到Web应用程序。 我筋疲力尽发现任何API,可以帮助我做到这一点。 由公司使用的电子邮件客户端迅雷鸟,因此,在具体的,我需要从雷霆鸟进入压光机的针对特定用户。 任何一个可以告诉我一些这方面的建议。

Answer 1:

库马尔

你提的问题是非常unprecise(什么样的是提供电子邮件/日历服务器?是否有一个LDAP域?等等)。 我想你说的是因为某些域的旧Exchange Server和WebDAV和问题,同时搜索? 不过,我也许可以给你至少有点帮助,这可能导致你已经走过其他编码器的路径,所以,你会发现一个简单而快速的解决方案。

今天我完成了一个M $的Exchange 2003连接器作为证据的概念。 我告诉你,那是艰难 ,我作为一个同时实习的学生。 然而,我的研究和搜查,查询和烦恼等得到提示进行了有益的API,但没有实现我的目的。

一个小框架,我发现这是很好的使用被称为沙丁鱼WebDAV客户端的Java 。 该项目是非常重量轻,虽然这是有帮助的得到一个想法的WebDAV是如何工作的,甚至因来源,随时可以看。

所有其他解决方案针对许多不同的MAPI CC ++利布斯的Linux。 这对我来说没有任何选项。

所以,我也有什么选择? 没有直达客户的Exchange服务器2K3,但一个电子邮件帐户。 所以,你都可以原谅我,但我发现它更容易让一个POST请求,通过OWA的E2K3服务器,因为它不是试图访问的一些重型的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的基于表单的身份验证 。 正如你可以看到我从浏览器链接,用于与E2K沟通抓起。 下一步很简单 - 发送请求,并等待...

HttpResponse response = httpclient.execute(httpPost);

如果你得到的回报良好的反应,那么你就可以过滤掉的会话ID。 登录成功后,下一步是寻找约会。 因此,你应该找到一个合适的方法与已建立的WebDAV的连接上通过询问一些信息M $的工作: 搜索方法

然后,你看它能做什么。 我去一个知名查找-机和查询的搜索日历文件夹使用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>";

这是没有特定的查询。 我刚刚从另一个文档交替,并删除了所有的东西,我didnt't需要。

我希望这可以帮助你一点。 关于提供雷鸟约会/日历日期,我不能告诉任何东西,因为这又是超出了我的知识。

最好的问候,晚安,

塞莫



文章来源: Acessing calendar of user email address using Java