Search in sources :

Example 1 with ImapRequest

use of com.zimbra.cs.mailclient.imap.ImapRequest in project zm-mailbox by Zimbra.

the class TestImap method testStoreTagsDirty.

@Test
public void testStoreTagsDirty() throws Exception {
    ZMailbox mbox = TestUtil.getZMailbox(USER);
    List<ZTag> tags = mbox.getAllTags();
    assertTrue(tags == null || tags.size() == 0);
    String tagName = "T1";
    final String tagName2 = "T2";
    ZTag tag = mbox.getTag(tagName);
    if (tag == null) {
        tag = mbox.createTag(tagName, Color.blue);
    }
    tags = mbox.getAllTags();
    assertTrue(tags != null && tags.size() == 1);
    assertEquals("T1", tags.get(0).getName());
    String folderName = "newfolder1";
    ZFolder folder = mbox.createFolder(Mailbox.ID_FOLDER_USER_ROOT + "", folderName, ZFolder.View.message, ZFolder.Color.DEFAULTCOLOR, null, null);
    mbox.addMessage(Mailbox.ID_FOLDER_INBOX + "", "u", tag.getId(), System.currentTimeMillis(), simpleMessage("foo1"), true);
    MailboxInfo info = connection.select("INBOX");
    assertTrue("INBOX does not contain expected flag " + tagName, info.getFlags().isSet(tagName));
    assertFalse("INBOX contain unexpected flag " + tagName2, info.getFlags().isSet(tagName2));
    Map<Long, MessageData> data = connection.fetch("1:*", "FLAGS");
    assertEquals(1, data.size());
    Iterator<Long> it = data.keySet().iterator();
    Long seq = it.next();
    assertTrue("flag not set on first message", data.get(seq).getFlags().isSet(tagName));
    ImapRequest req = connection.newRequest("STORE", seq + "", "+FLAGS", tagName2);
    req.setResponseHandler(new ResponseHandler() {

        @Override
        public void handleResponse(ImapResponse res) throws Exception {
            if (res.isUntagged() && res.getCCode() == CAtom.FLAGS) {
                Flags flags = (Flags) res.getData();
                assertTrue(flags.isSet(tagName2));
            }
        }
    });
    req.sendCheckStatus();
}
Also used : ResponseHandler(com.zimbra.cs.mailclient.imap.ResponseHandler) MessageData(com.zimbra.cs.mailclient.imap.MessageData) ImapRequest(com.zimbra.cs.mailclient.imap.ImapRequest) ZTag(com.zimbra.client.ZTag) ImapResponse(com.zimbra.cs.mailclient.imap.ImapResponse) Flags(com.zimbra.cs.mailclient.imap.Flags) ServiceException(com.zimbra.common.service.ServiceException) CommandFailedException(com.zimbra.cs.mailclient.CommandFailedException) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ZMailbox(com.zimbra.client.ZMailbox) ZFolder(com.zimbra.client.ZFolder) MailboxInfo(com.zimbra.cs.mailclient.imap.MailboxInfo) Test(org.junit.Test)

Example 2 with ImapRequest

use of com.zimbra.cs.mailclient.imap.ImapRequest in project zm-mailbox by Zimbra.

the class ImapAppender method append.

private long append(MessageInfo mi, Literal data) throws IOException {
    ImapRequest req = connection.newRequest(CAtom.APPEND, new MailboxName(mailbox));
    if (mi.flags != null) {
        req.addParam(mi.flags);
    }
    if (mi.date != null) {
        req.addParam(mi.date);
    }
    req.addParam(data);
    ResponseText rt = req.sendCheckStatus().getResponseText();
    if (rt != null && rt.getCCode() == CAtom.APPENDUID) {
        AppendResult ar = (AppendResult) rt.getData();
        if (ar.getUid() > 0) {
            return ar.getUid();
        }
    }
    throw req.failed("APPENDUID supported but UID missing from result");
}
Also used : MailboxName(com.zimbra.cs.mailclient.imap.MailboxName) ImapRequest(com.zimbra.cs.mailclient.imap.ImapRequest) ResponseText(com.zimbra.cs.mailclient.imap.ResponseText) AppendResult(com.zimbra.cs.mailclient.imap.AppendResult)

Example 3 with ImapRequest

use of com.zimbra.cs.mailclient.imap.ImapRequest in project zm-mailbox by Zimbra.

the class RemoteFolder method copyMessage.

public CopyResult copyMessage(long uid, String mbox) throws IOException {
    assert isSelected();
    String seq = String.valueOf(uid);
    ImapRequest req = connection.newUidRequest(CAtom.COPY, seq, new MailboxName(mbox));
    ResponseText rt = req.sendCheckStatus().getResponseText();
    if (rt.getCCode() == CAtom.COPYUID) {
        CopyResult cr = (CopyResult) rt.getData();
        // Bug 36373: If COPYUID result 0 then assume that message no longer exists.
        if (cr != null && cr.getToUids()[0] != 0) {
            return cr;
        }
    }
    // Message not found
    return null;
}
Also used : MailboxName(com.zimbra.cs.mailclient.imap.MailboxName) ImapRequest(com.zimbra.cs.mailclient.imap.ImapRequest) ResponseText(com.zimbra.cs.mailclient.imap.ResponseText) CopyResult(com.zimbra.cs.mailclient.imap.CopyResult)

Example 4 with ImapRequest

use of com.zimbra.cs.mailclient.imap.ImapRequest in project zm-mailbox by Zimbra.

the class SharedImapTests method testOverflowNotAppend.

@Test(timeout = 100000)
public void testOverflowNotAppend() throws Exception {
    connection = connectAndSelectInbox();
    int oldReadTimeout = connection.getConfig().getReadTimeout();
    try {
        connection.setReadTimeout(10);
        ImapRequest req = connection.newRequest(CAtom.FETCH, "1:*");
        req.addParam("{" + ((long) (Integer.MAX_VALUE) + 1) + "+}");
        ImapResponse resp = req.send();
        assertTrue("response should be NO or BAD", resp.isNO() || resp.isBAD());
    } finally {
        connection.setReadTimeout(oldReadTimeout);
    }
}
Also used : ImapRequest(com.zimbra.cs.mailclient.imap.ImapRequest) ImapResponse(com.zimbra.cs.mailclient.imap.ImapResponse) Test(org.junit.Test)

Example 5 with ImapRequest

use of com.zimbra.cs.mailclient.imap.ImapRequest in project zm-mailbox by Zimbra.

the class SharedImapTests method testAppendTagsDirty.

@Test(timeout = 100000)
public void testAppendTagsDirty() throws Exception {
    connection = connectAndSelectInbox();
    Flags flags = Flags.fromSpec("afs");
    // new tag; does not exist in mbox
    final String tag1 = "NEWDIRTYTAG";
    MailboxInfo info = connection.select("INBOX");
    assertFalse("INBOX contains unexpected flag " + tag1, info.getFlags().isSet(tag1));
    flags.set(tag1);
    Date date = new Date(System.currentTimeMillis());
    Literal msg = message(10);
    try {
        ImapRequest req = connection.newRequest("APPEND", "INBOX", flags, date, msg);
        req.setResponseHandler(new ResponseHandler() {

            @Override
            public void handleResponse(ImapResponse res) throws Exception {
                if (res.isUntagged() && res.getCCode() == CAtom.FLAGS) {
                    Flags flags = (Flags) res.getData();
                    assertTrue(flags.isSet(tag1));
                }
            }
        });
        req.sendCheckStatus();
    } finally {
        msg.dispose();
    }
}
Also used : ResponseHandler(com.zimbra.cs.mailclient.imap.ResponseHandler) Literal(com.zimbra.cs.mailclient.imap.Literal) ImapRequest(com.zimbra.cs.mailclient.imap.ImapRequest) MailboxInfo(com.zimbra.cs.mailclient.imap.MailboxInfo) ImapResponse(com.zimbra.cs.mailclient.imap.ImapResponse) Flags(com.zimbra.cs.mailclient.imap.Flags) Date(java.util.Date) MessagingException(javax.mail.MessagingException) CommandFailedException(com.zimbra.cs.mailclient.CommandFailedException) ServiceException(com.zimbra.common.service.ServiceException) IOException(java.io.IOException) Test(org.junit.Test)

Aggregations

ImapRequest (com.zimbra.cs.mailclient.imap.ImapRequest)10 ImapResponse (com.zimbra.cs.mailclient.imap.ImapResponse)8 Test (org.junit.Test)8 Flags (com.zimbra.cs.mailclient.imap.Flags)6 ServiceException (com.zimbra.common.service.ServiceException)4 CommandFailedException (com.zimbra.cs.mailclient.CommandFailedException)4 MailboxInfo (com.zimbra.cs.mailclient.imap.MailboxInfo)4 MailboxName (com.zimbra.cs.mailclient.imap.MailboxName)4 ResponseHandler (com.zimbra.cs.mailclient.imap.ResponseHandler)4 IOException (java.io.IOException)4 Date (java.sql.Date)3 ZMailbox (com.zimbra.client.ZMailbox)2 ZTag (com.zimbra.client.ZTag)2 Literal (com.zimbra.cs.mailclient.imap.Literal)2 MessageData (com.zimbra.cs.mailclient.imap.MessageData)2 ResponseText (com.zimbra.cs.mailclient.imap.ResponseText)2 UnsupportedEncodingException (java.io.UnsupportedEncodingException)2 MessagingException (javax.mail.MessagingException)2 ZFolder (com.zimbra.client.ZFolder)1 AppendResult (com.zimbra.cs.mailclient.imap.AppendResult)1