如何使用IMAP协议和JavaMail读取邮件收件箱,然后使用本地磁盘存储邮件。没有mstor的文档。
我尝试用这种方法,但是MStorStore似乎只是读取本地mbox,而不是根据在connect()函数中作为参数传递的外部服务器来创建和更新它。我收到错误消息:文件夹[收件箱]不存在。

Session lSession = Session.getDefaultInstance(props);
MStorStore lStore = new MStorStore(lSession , new URLName("mstor:c:/some_path/" + _mailModel.account.login));
lStore.connect(_mailModel.account.imap, _mailModel.account.login, _mailModel.account.password);
Folder lInbox = lStore.getDefaultFolder().getFolder("Inbox");


问题是如何从javax.mail.Store创建MBox,我可以使用Mstor进行读取和更新。

最佳答案

我不知道我是否回答正确的问题(或根本回答一个问题),但是,这是我在Scala程序中编写的一种方法,该程序采用一组javamail消息(通过imap获取)并将它们写到使用MStorStore在项目根目录中名为“ mbox”的目录中添加了新的mbox文件。新文件的名称无论在“ mboxName”参数中传递的名称如何。

def writeToMbox(messages: Array[Message], mboxName: String) {
    val mProps = System.getProperties
    mProps.setProperty("mstor.mbox.metadataStrategy", "none")
    val mSession = Session.getDefaultInstance(mProps)
    val mStore = new MStorStore(mSession, new URLName("mstor:mbox"))
    mStore.connect
    val mFolder = mStore.getDefaultFolder
    val localMbox = (new File("mbox", mboxName)).createNewFile
    val mbox = mFolder.getFolder(mboxName)
    mbox.open(Folder.READ_WRITE)
    mbox.appendMessages(messages)
    mbox.close(false)
    mStore.close
  }

10-08 16:08