使用Javamail IMAP的Exchange Server 2013:实现分类功能

时间:2017-08-22 08:11:20

标签: javamail exchange-server imap

背景

我开始使用 Microsoft Exchange Server 2013 & Javamail 1.5.6 我正在创建一个Java客户端,目前我可以通过IMAP协议和LIST / SEARCH电子邮件连接到邮箱。

我的问题

我想实现一个使用Java代码来分类邮件的函数,结果应该与outlook中的以下函数相同↓

(1)右键单击邮件,单击分类,然后选择目标标签

enter image description here

(2)标签现在在邮件上:

enter image description here

我自己的研究

  1. 我通过Javamail API但却一无所知。
  2. 然后,我快速查看IMAP: RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1,但无法找到关于分类的任何内容,似乎它不是标准的IMAP功能?
  3. 然后我发现这篇文章:Getting Gmail labels using javamail,该家伙使用((IMAPFolder) folder).doCommand()做了自己的扩展:
  4. ```

    final MessageSet[] mSets = MessageSet.createMessageSets(mns);
    ((IMAPFolder) folder).doCommand(new IMAPFolder.ProtocolCommand() {
    
    @Override
    public Object doCommand(IMAPProtocol p) throws ProtocolException {
        try {
            Response[] r = p.fetch(mSets, "X-GM-LABELS X-GM-THRID");
            for (int i = 0; i < r.length; i++) {
                if (!FetchResponse.class.isInstance(r[i]))
                    continue;
    
                // Got a FetchResponse.
                GmailFetchResponse gfr = new GmailFetchResponse(
                                ((FetchResponse) r[i]).toString());
                // Use gfr.getNumber() to get the msg number
                for (int j = 0; j < gfr.getItemCount(); j++) {
                    Item item = gfr.getItem(j);
                    if (X_GM_LABELS.class.isInstance(item))
                        // get the labels
                        ((X_GM_LABELS) item).x_gm_labels);
                }
            }
        } catch (ProtocolException e) {
            logError(e.getMessage(), e);
        }
        return null;
    }
    });
    

    ```

    看起来这个人通过扩展IMAPProtocol类来构建自己的命令。

    但是我找不到任何关于Microsoft Exchange服务器命令的信息,你能帮我解决这个问题吗?

0 个答案:

没有答案