我只要求我有一个类型为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 所以任何人都可以帮助我。提前谢谢。
答案 0 :(得分:0)
您之前的代码存在问题,或者在搜索收件箱之后没有未读邮件,但msgs
方式为空 - 您只需首先检查msgs.length > 0
,如果是然后决定你想做什么。您可以返回一个Optional(Java8功能,您需要更改方法签名以匹配)或者只是返回null或根据您的需要抛出异常。然后,所有3个场景都需要在调用代码中进行适当的处理。
请注意,抛出异常是不正确的方法,除非只在应该有未读消息的情况下调用代码。