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 <ilker.c...@gmail.com>
Authored: Tue Jul 4 16:50:48 2017 +0300
Committer: benwa <btell...@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 <sen...@domain.com>
+MIME-Version: 1.0
+To: <l...@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 u...@domain.tld INBO.newFolder
+{cli} CreateMailbox #private u...@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 u...@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 u...@domain.tld.
+
 ## Managing mappings
 
 A mapping is a recipient rewritting rule. There is several kind of rewritting 
rules:


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

Reply via email to