从Gmail-JavaMail API+;IMAP

从Gmail-JavaMail API+;IMAP,gmail,jakarta-mail,imap,Gmail,Jakarta Mail,Imap,现在,我已经创建了一个代码来检索未读的电子邮件并读取其正文,然后我们可以存储或做任何我们想做的事情 它完全可以工作,但问题是它只为第一封邮件提供了正文,第二封邮件提供了带有html标记的正文 我正在使用JavaMail API 我该怎么办 提前谢谢 致以最良好的祝愿, 阿里 输出: a a 0 <div dir="ltr">b<br> </div> b 1 Exception in thread "main" java.lang.ArrayIndexO

现在,我已经创建了一个代码来检索未读的电子邮件并读取其正文,然后我们可以存储或做任何我们想做的事情

它完全可以工作,但问题是它只为第一封邮件提供了正文,第二封邮件提供了带有html标记的正文

我正在使用JavaMail API

我该怎么办

提前谢谢

致以最良好的祝愿, 阿里

输出:

a

a 
0
<div dir="ltr">b<br>
</div>

b 
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
    at java.util.Vector.elementAt(Unknown Source)
    at javax.mail.Multipart.getBodyPart(Multipart.java:156)
    at javax.mail.internet.MimeMultipart.getBodyPart(MimeMultipart.java:258)
    at pack1.InboxReader.main(InboxReader.java:39)
a
A.
0
b
B 1. 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:2>=2 位于java.util.Vector.elementAt(未知源) 位于javax.mail.Multipart.getBodyPart(Multipart.java:156) 在javax.mail.internet.MimeMultipart.getBodyPart(MimeMultipart.java:258) 位于pack1.InboxReader.main(InboxReader.java:39)
从列表中获取消息的索引与从该消息中获取部分的索引相同。因此,您将从消息1获取第1部分,从消息2获取第2部分,等等。在某个时刻,您将找到一条包含少于N个部分的消息N,并获得
ArrayIndexOutOfBoundsException

Multipart mp = (Multipart)messages[i].getContent();  
Object p = mp.getBodyPart(i).getContent();  
另外,您假设所有消息都是多部分的。第一次对非多部分消息调用
Message.getContent()
时,您将得到一个
ClassCastException
,因为它很可能会返回一个
字符串

Multipart mp = (Multipart)messages[i].getContent();  
类似地,假设为非嵌套多部分。当您第一次收到一条顶层
multipart/mixed
包含
multipart/alternative
作为其第一个子部分的消息时,调用
MimeBodyPart.getContent()
将返回另一个
multipart
,因此
p.toString()
将只返回一个Java对象标识符,不是您想要的消息内容

Object p = mp.getBodyPart(i).getContent();  
String q = p.toString();//object has the body content  

要做到这一点,您需要了解消息结构并确定您关心的“正文”部分。

我想知道这样一个问题得到+11而不是-20(并以13开头)
Object p = mp.getBodyPart(i).getContent();  
String q = p.toString();//object has the body content