You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/07/25 07:27:36 UTC

[1/2] james-project git commit: JAMES-2081 Implement and document ImportEml CLI command

Repository: james-project
Updated Branches:
  refs/heads/master 19d4dc0e7 -> 081102eab


JAMES-2081 Implement and document ImportEml CLI command


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c2a21ffc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c2a21ffc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c2a21ffc

Branch: refs/heads/master
Commit: c2a21ffc0d23d96893f447535dc243686a3eb70f
Parents: 3a70ae8
Author: ilker yıldırım <il...@gmail.com>
Authored: Tue Jul 4 16:50:48 2017 +0300
Committer: benwa <bt...@linagora.com>
Committed: Mon Jul 10 14:58:09 2017 +0700

----------------------------------------------------------------------
 .../james/mailbox/store/probe/MailboxProbe.java |  2 +
 .../java/org/apache/james/cli/ServerCmd.java    |  3 ++
 .../james/cli/probe/impl/JmxMailboxProbe.java   |  5 ++
 .../java/org/apache/james/cli/type/CmdType.java |  1 +
 .../org/apache/james/cli/ServerCmdTest.java     | 51 ++++++++++++++++++++
 .../org/apache/james/cli/type/CmdTypeTest.java  |  6 +++
 .../apache/james/modules/MailboxProbeImpl.java  | 15 ++++++
 .../mailbox/MailboxManagerManagement.java       | 29 ++++++++++-
 .../mailbox/MailboxManagerManagementMBean.java  | 16 +++++-
 .../adapter/mailbox/MailboxManagementTest.java  | 43 +++++++++++++++++
 .../src/test/resources/eml/frnog.eml            | 17 +++++++
 src/site/markdown/server/manage-cli.md          | 13 ++++-
 12 files changed, 198 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
index 2a64365..6878bb5 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
@@ -40,6 +40,8 @@ public interface MailboxProbe {
 
     void deleteMailbox(String namespace, String user, String name);
 
+    void importEmlFileToMailbox(String namespace, String user, String name, String emlpath) throws Exception;
+	
     ComposedMessageId appendMessage(String username, MailboxPath mailboxPath, InputStream message, Date internalDate,
             boolean isRecent, Flags flags) throws MailboxException;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
index efbf4b6..5ad4e79 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
@@ -266,6 +266,9 @@ public class ServerCmd {
         case DELETEMAILBOX:
             mailboxProbe.deleteMailbox(arguments[1], arguments[2], arguments[3]);
             break;
+        case IMPORTEML:
+            mailboxProbe.importEmlFileToMailbox(arguments[1], arguments[2], arguments[3], arguments[4]);
+            break;
         case GETSTORAGEQUOTA:
             printStorageQuota(arguments[1], quotaProbe.getStorageQuota(arguments[1]), printStream);
             break;

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
index ab2efc3..b3b5cc5 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
@@ -84,6 +84,11 @@ public class JmxMailboxProbe implements MailboxProbe, JmxProbe {
     }
 
     @Override
+    public void importEmlFileToMailbox(String namespace, String user, String name, String emlpath) {
+        mailboxManagerManagement.importEmlFileToMailbox(namespace, user, name, emlpath);
+    }
+
+    @Override
     public void reIndexMailbox(String namespace, String user, String name) throws Exception {
         reIndexerManagement.reIndex(namespace, user, name);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
index 1858666..b94e0da 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
@@ -41,6 +41,7 @@ public enum CmdType {
     CREATEMAILBOX("CreateMailbox", "namespace", "user", "name"),
     LISTUSERMAILBOXES("ListUserMailboxes", "user"),
     DELETEMAILBOX("DeleteMailbox", "namespace", "user", "name"),
+    IMPORTEML("ImportEml", "namespace", "user", "name", "path"),
     GETSTORAGEQUOTA("GetStorageQuota", "quotaroot"),
     GETMESSAGECOUNTQUOTA("GetMessageCountQuota", "quotaroot"),
     GETQUOTAROOT("GetQuotaroot", "namespace", "user", "name"),

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
index 570167b..f8281b2 100644
--- a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
+++ b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
@@ -332,7 +332,24 @@ public class ServerCmdTest {
         testee.executeCommandLine(commandLine);
         control.verify();
     }
+    
+    @Test
+    public void importEmlFileToMailboxCommandShouldWork() throws Exception {
+        String user = "user@domain";
+        String namespace = "#private";
+        String name = "INBOX.test";
+        String emlpath = "./src/test/resources/eml/frnog.eml";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.IMPORTEML.getCommand(), namespace, user, name, emlpath};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
 
+        mailboxProbe.importEmlFileToMailbox(namespace, user, name, emlpath);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+	
     @Test
     public void listUserMailboxesMappingsCommandShouldWork() throws Exception {
         String user = "user@domain";
@@ -811,6 +828,23 @@ public class ServerCmdTest {
             control.verify();
         }
     }
+	
+	
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void importEmlFileToMailboxCommandShouldThrowOnMissingArguments() throws Exception {
+        String user = "user@domain";
+        String namespace = "#private";
+        String name = "INBOX.test";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.IMPORTEML.getCommand(), namespace, user, name};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
 
     @Test(expected = InvalidArgumentNumberException.class)
     public void listUserMailboxesMappingsCommandShouldThrowOnMissingArguments() throws Exception {
@@ -1091,6 +1125,23 @@ public class ServerCmdTest {
     }
 
     @Test(expected = InvalidArgumentNumberException.class)
+    public void importEmlFileToMailboxCommandShouldThrowOnAdditionalArguments() throws Exception {
+        String user = "user@domain";
+        String namespace = "#private";
+        String name = "INBOX.test";
+        String emlpath = "./src/test/resources/eml/frnog.eml";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.IMPORTEML.getCommand(), namespace, user, name, emlpath, ADDITIONAL_ARGUMENT};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+	
+    @Test(expected = InvalidArgumentNumberException.class)
     public void listUserMailboxesMappingsCommandShouldThrowOnAdditionalArguments() throws Exception {
         String user = "user@domain";
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.LISTUSERMAILBOXES.getCommand(), user, ADDITIONAL_ARGUMENT };

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
index 3d66295..39b8d85 100644
--- a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
+++ b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
@@ -139,6 +139,12 @@ public class CmdTypeTest {
     }
 
     @Test
+    public void lookupImportEmlFileToMailboxShouldReturnEnumValue() {
+        assertThat(CmdType.lookup("ImportEml"))
+            .isEqualTo(CmdType.IMPORTEML);
+    }
+
+    @Test
     public void lookupSetDefaultMaxStorageQuotaShouldReturnEnumValue() {
         assertThat(CmdType.lookup("setdefaultmaxstoragequota")).isEqualTo(CmdType.SETDEFAULTMAXSTORAGEQUOTA);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
index b478977..445fa46 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.modules;
 
+import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.Collection;
 import java.util.Date;
@@ -55,6 +56,7 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe {
     private final MailboxManager mailboxManager;
     private final MailboxMapperFactory mailboxMapperFactory;
     private final SubscriptionManager subscriptionManager;
+    public static final boolean RECENT = true;
 
     @Inject
     private MailboxProbeImpl(MailboxManager mailboxManager, MailboxMapperFactory mailboxMapperFactory, SubscriptionManager subscriptionManager) {
@@ -145,6 +147,19 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe {
     }
 
     @Override
+    public void importEmlFileToMailbox(String namespace, String user, String name, String emlPath) throws Exception {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(user, LOGGER);
+        mailboxManager.startProcessingRequest(mailboxSession);
+
+        MessageManager messageManager = mailboxManager.getMailbox(new MailboxPath(namespace, user, name), mailboxSession);
+        InputStream emlFileAsStream = new FileInputStream(emlPath);
+        messageManager.appendMessage(emlFileAsStream, new Date(), mailboxSession, RECENT, new Flags());
+
+        mailboxManager.endProcessingRequest(mailboxSession);
+        mailboxSession.close();
+    }
+    
+    @Override
     public ComposedMessageId appendMessage(String username, MailboxPath mailboxPath, InputStream message, Date internalDate, boolean isRecent, Flags flags) 
             throws MailboxException {
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
index 098af84..5f794a8 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
@@ -18,19 +18,23 @@
  ****************************************************************/
 package org.apache.james.adapter.mailbox;
 
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import javax.mail.Flags;
 import javax.management.NotCompliantMBeanException;
 import javax.management.StandardMBean;
 
-import com.google.common.base.Preconditions;
 import org.apache.james.lifecycle.api.LogEnabled;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxMetaData;
@@ -38,6 +42,8 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
 import org.slf4j.Logger;
 
+import com.google.common.base.Preconditions;
+
 /**
  * JMX managmenent for Mailboxes
  */
@@ -45,6 +51,7 @@ public class MailboxManagerManagement extends StandardMBean implements MailboxMa
 
     private MailboxManager mailboxManager;
     private Logger log;
+    private static final boolean RECENT = true;
 
     @Inject
     public void setMailboxManager(@Named("mailboxmanager") MailboxManager mailboxManager) {
@@ -142,6 +149,26 @@ public class MailboxManagerManagement extends StandardMBean implements MailboxMa
         }
     }
 
+    @Override
+    public void importEmlFileToMailbox(String namespace, String user, String name, String emlPath) {
+        checkMailboxArguments(namespace, user, name);
+        checkString(emlPath, "email file path name");
+
+        MailboxSession session = null;
+        try {
+            session = mailboxManager.createSystemSession(user, log);
+            mailboxManager.startProcessingRequest(session);
+            MessageManager messageManager = mailboxManager.getMailbox(new MailboxPath(namespace, user, name), session);
+            InputStream emlFileAsStream = new FileInputStream(emlPath);
+            messageManager.appendMessage(emlFileAsStream, new Date(),
+                    session, RECENT, new Flags());
+        } catch (Exception e) {
+            log.error("Unable to create mailbox", e);
+        } finally {
+            closeSession(session);
+        }
+    }
+
     private void closeSession(MailboxSession session) {
         if (session != null) {
             mailboxManager.endProcessingRequest(session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
index f36d295..9485075 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
@@ -58,4 +58,18 @@ public interface MailboxManagerManagementMBean {
      * @param name Name of the mailbox to delete
      */
     void deleteMailbox(String namespace, String user, String name);
-}
\ No newline at end of file
+
+    /**
+     * Import Eml File to the given mailbox
+     *
+     * @param namespace
+     *            Namespace of the mailbox to import email file
+     * @param user
+     *            User the mailbox to import email file belongs to
+     * @param name
+     *            Name of the mailbox to import email file
+     * @param emlpath
+     *            Name of the email file of this URL
+     */
+    void importEmlFileToMailbox(String namespace, String user, String name, String emlpath);
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index 4c4cc42..30385cd 100644
--- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -21,18 +21,26 @@ package org.apache.james.adapter.mailbox;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Iterator;
+
+import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.Before;
@@ -40,11 +48,14 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Charsets;
+
 public class MailboxManagementTest {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(MailboxManagementTest.class);
     public static final String USER = "user";
     public static final int UID_VALIDITY = 10;
+    public static final int LIMIT = 1;
 
     private MailboxManagerManagement mailboxManagerManagement;
     private InMemoryMailboxSessionMapperFactory inMemoryMapperFactory;
@@ -236,6 +247,38 @@ public class MailboxManagementTest {
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
     }
 
+    @Test
+    public void importEmlFileToMailboxShouldImportEmlFileToGivenMailbox() throws Exception {
+        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"),
+                UID_VALIDITY);
+        inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
+        String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile();
+        mailboxManagerManagement.importEmlFileToMailbox(MailboxConstants.USER_NAMESPACE, USER, "name", emlpath);
+
+        assertThat(inMemoryMapperFactory.getMessageMapper(session).countMessagesInMailbox(mailbox)).isEqualTo(1);
+        Iterator<MailboxMessage> iterator = inMemoryMapperFactory.getMessageMapper(session).findInMailbox(mailbox,
+                MessageRange.all(), MessageMapper.FetchType.Full, LIMIT);
+        MailboxMessage mailboxMessage = iterator.next();
+
+        assertThat(IOUtils.toString(new FileInputStream(new File(emlpath)), Charsets.UTF_8))
+                .isEqualTo(IOUtils.toString(mailboxMessage.getFullContent(), Charsets.UTF_8));
+    }
+
+    @Test
+    public void importEmlFileToMailboxShouldNotImportEmlFileWithWrongPathToGivenMailbox() throws Exception {
+        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"),
+                UID_VALIDITY);
+        inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
+        String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile();
+        mailboxManagerManagement.importEmlFileToMailbox(MailboxConstants.USER_NAMESPACE, USER, "name", "wrong_path" + emlpath);
+
+        assertThat(inMemoryMapperFactory.getMessageMapper(session).countMessagesInMailbox(mailbox)).isEqualTo(0);
+        Iterator<MailboxMessage> iterator = inMemoryMapperFactory.getMessageMapper(session).findInMailbox(mailbox,
+                MessageRange.all(), MessageMapper.FetchType.Full, LIMIT);
+        assertThat(iterator.hasNext()).isFalse();
+    }
+
+	
     @Test(expected = NullPointerException.class)
     public void deleteMailboxShouldThrowOnNullNamespace() {
         mailboxManagerManagement.deleteMailbox(null, "a", "a");

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/server/container/mailbox-adapter/src/test/resources/eml/frnog.eml
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/resources/eml/frnog.eml b/server/container/mailbox-adapter/src/test/resources/eml/frnog.eml
new file mode 100644
index 0000000..ed3ec46
--- /dev/null
+++ b/server/container/mailbox-adapter/src/test/resources/eml/frnog.eml
@@ -0,0 +1,17 @@
+Message-ID: <556D7ED7.2090108>
+Date: Tue, 2 Jun 2015 12:00:55 +0200
+From: sender <se...@domain.com>
+MIME-Version: 1.0
+To: <li...@james.org>
+Content-Type: text/plain; charset="utf-8"; format=flowed
+Content-Transfer-Encoding: 8bit
+
+Bonjour
+
+
+Je cherche un partenaire.
+
+Merci d'avance !
+
+
+Cordialement,

http://git-wip-us.apache.org/repos/asf/james-project/blob/c2a21ffc/src/site/markdown/server/manage-cli.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/server/manage-cli.md b/src/site/markdown/server/manage-cli.md
index 3906f45..e528edf 100644
--- a/src/site/markdown/server/manage-cli.md
+++ b/src/site/markdown/server/manage-cli.md
@@ -140,9 +140,20 @@ He can list the mailboxes of a specific user:
 And finally can create a specific mailbox:
 
 ```
-{cli} CreateMailbox #private user@domain.tld INBO.newFolder
+{cli} CreateMailbox #private user@domain.tld INBOX.newFolder
 ```
 
+## Adding a message in a mailbox
+
+The administrator can use the CLI to add a message in a mailbox. this can be done using:
+
+```
+{cli} ImportEml #private user@domain.tld INBOX.newFolder /full/path/to/file.eml
+```
+
+This command will add a message having the content specified in file.eml (that needs to be at the EML format). It will get added
+in the INBOX.subFolder mailbox belonging to user user@domain.tld.
+
 ## Managing mappings
 
 A mapping is a recipient rewritting rule. There is several kind of rewritting rules:


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[2/2] james-project git commit: Merge remote-tracking branch 'btellier/JAMES-2081'

Posted by ad...@apache.org.
Merge remote-tracking branch 'btellier/JAMES-2081'


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/081102ea
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/081102ea
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/081102ea

Branch: refs/heads/master
Commit: 081102eab17a916a93579b84f7b6fb8f498b3ca4
Parents: 19d4dc0 c2a21ff
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Jul 25 09:27:00 2017 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Jul 25 09:27:00 2017 +0200

----------------------------------------------------------------------
 .../james/mailbox/store/probe/MailboxProbe.java |  2 +
 .../java/org/apache/james/cli/ServerCmd.java    |  3 ++
 .../james/cli/probe/impl/JmxMailboxProbe.java   |  5 ++
 .../java/org/apache/james/cli/type/CmdType.java |  1 +
 .../org/apache/james/cli/ServerCmdTest.java     | 51 ++++++++++++++++++++
 .../org/apache/james/cli/type/CmdTypeTest.java  |  6 +++
 .../apache/james/modules/MailboxProbeImpl.java  | 15 ++++++
 .../mailbox/MailboxManagerManagement.java       | 29 ++++++++++-
 .../mailbox/MailboxManagerManagementMBean.java  | 16 +++++-
 .../adapter/mailbox/MailboxManagementTest.java  | 43 +++++++++++++++++
 .../src/test/resources/eml/frnog.eml            | 17 +++++++
 src/site/markdown/server/manage-cli.md          | 13 ++++-
 12 files changed, 198 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org