2012-04-21 7 views
0

Использование mstor w/Windows, я могу подключиться к mbox-магазинам (благодаря SO). И, казалось бы, я могу читать указатели сообщений; Я знаю это, потому что всякий раз, когда я перебираю содержимое магазина, он выполняет итерацию по правильному количеству сообщений. Проблема в том, что ни заголовки, ни контент не загружаются! Есть идеи?mstor чтение файла mbox, но возврат

Да, у меня есть материал JavaMail в пути к классам (он входит в библиотеку mstor в эти дни). И я даже использую его в одном из файлов примеров mstor (imagined.mbox).

Заранее спасибо.

Мой код:

public static void main(String[] args) throws Exception { 

    Properties props = new Properties(); 
    props.setProperty("mstor.mbox.metadataStrategy", "xml"); 
    Session session1 = Session.getDefaultInstance(props); 

    Session session = Session.getDefaultInstance(new Properties()); 

    Store store = session.getStore(new URLName("mstor:C:/tmp/imagined.mbox")); 
    store.connect(); 

    System.out.println(store.isConnected()); 

    Folder inbox = store.getDefaultFolder(); // no subfolder here; even if there is an Inbox, I get the same thing... 
    inbox.open(Folder.READ_ONLY); 

    Message[] messages = inbox.getMessages(); 
    for (Message m : messages) { 
    System.out.println(m.getSubject()); 
    } 

}

Мой типичный результат:

true (i.e., yes, I'm connected...) 
null 
null 
null 
null 

ответ

0

Я вижу это месяц назад, но я столкнулся с той же проблемой. Попробуйте добавить m.saveChanges() в качестве первой строки в вашем цикле for. Это заставляет mstor создавать кеш заголовков сообщения.

Логично верно. Странно, что мы должны были добавить эту строку, но это функциональная работа для нашей проблемы.

Если вы уже нашли другое решение, не забудьте поделиться им. Просто потому, что никто не имел ответа, не означает, что у кого-то была такая же проблема!

+0

Почему эта работа/зачем она нужна? Я использую это из некоторого кода Clojure, и он также решил мою проблему ... –

+0

Прошло много времени с тех пор, как я работал над этим ... Я думаю, что это была ошибка в API, где он читал сообщение из кеша какой-то, до того, как он был кеширован. Если это сработает для вас, подтвердите ответ. –

+0

См. Мой ответ выше, это было почти то, что вы говорите. В конце концов отключение кеша сделало трюк. –

0

После создания экземпляра Properties называется properties, используйте следующее отключить кэш:

properties.setProperty("mstor.mbox.metadataStrategy", "none"); 

Если вы сделаете это и попробовать еще раз, вы должны найти вы в состоянии вызвать методы доступа для субъекта , от, до и т. д., не прибегая к рутинному m.saveChanges().