2016-03-04 24 views
1

如何使用IMAP協議和JavaMail閱讀郵件收件箱,然後使用本地磁盤存儲郵件。沒有mstor的文檔。 我嘗試這種方式,但似乎MStorStore只是讀取本地mbox,而不是根據在connect()函數中作爲params傳遞的外部服務器創建和更新它。我收到錯誤:文件夾[收件箱]不存在。如何使用Java JavaMail創建mbox?

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創建我可以使用Mstor讀取和更新的MBox。

+0

有一個快速瀏覽一下[MStorFolder(https://github.com/benfortuna/mstor/blob/master/src/main/java/net/fortuna/mstor/MStorFolder.java)可能以後有什麼你正在尋找。 – SubOptimal

+0

不,MStorFolder擴展了java.mail.Folder,從我看到的只是從已經存在的文件夾讀取 –

+0

[MStorFolder.create](https://github.com/benfortuna/mstor/blob/master/src/ main/java/net/fortuna/mstor/MStorFolder.java#L206)聽起來像創建一個文件夾。如果它存在一個exceptioin'new MessagingException(「文件夾已經存在」)''會被拋出。聽起來對我不壞。 – SubOptimal

回答

0

我不知道我是否回答正確的問題(或者回答一個問題),但是,這裏是我在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 
    }