【问题标题】:How to create mbox using Java JavaMail?如何使用 Java JavaMail 创建 mbox?
【发布时间】:2016-06-17 22:02:51
【问题描述】:

如何使用 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 读取和更新。

【问题讨论】:

  • 快速浏览后MStorFolder 可能就是您要找的东西。
  • 不,MStorFolder 扩展了 java.mail.Folder,据我所知,它只是从已经存在的文件夹中读取
  • MStorFolder.create 听起来像创建一个文件夹。如果存在异常new MessagingException("Folder already exists") 将被抛出。听起来对我来说还不错。
  • 是的,但问题是 MStorStore,它在构造函数中作为参数传递给 MStorFolder,使用 mstor 协议(本地存储)或 imaps,我无法从服务器下载 mbox 并保持同步

标签: java jakarta-mail mbox mstor


【解决方案1】:

我不知道我是否回答了正确的问题(或根本回答了一个问题),但是,这是我在 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
  }

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 2013-04-15
    • 2010-11-20
    • 2016-06-26
    • 2021-11-06
    • 2012-06-28
    • 1970-01-01
    • 2011-12-04
    • 2020-08-24
    相关资源
    最近更新 更多