从消息数组中返回单个消息

时间:2016-05-26 15:16:45

标签: java

我只要求我有一个类型为Messages的数组。所以我想从他们那里返回一条消息。任何人都可以帮我怎么做?

public static Message getContent(String user, String pswd, String sub, String to)
        throws MessagingException, IOException {
    Session imapSession1 = TestMail.greenMail.getImap().createSession();
    Store store = imapSession1.getStore("imap");
    store.connect("foo", "password");
    Folder inbox = store.getFolder("INBOX");
    inbox.open(Folder.READ_ONLY);
    // Getting only unread messages.
    Flags flags = new Flags();
    flags.add(Flag.SEEN);
    FlagTerm flagTerm = new FlagTerm(flags, false);
    Message[] msgs = inbox.search(flagTerm);
    Message ms = msgs[0];
    return ms;

}

我试图返回如上所示的第一条消息,但它抛出了IndexOutOfBoundsException:0 所以任何人都可以帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您之前的代码存在问题,或者在搜索收件箱之后没有未读邮件,但msgs方式为空 - 您只需首先检查msgs.length > 0,如果是然后决定你想做什么。您可以返回一个Optional(Java8功能,您需要更改方法签名以匹配)或者只是返回null或根据您的需要抛出异常。然后,所有3个场景都需要在调用代码中进行适当的处​​理。

请注意,抛出异常是不正确的方法,除非只在应该有未读消息的情况下调用代码。