从Gmail-JavaMail API+;IMAP
现在,我已经创建了一个代码来检索未读的电子邮件并读取其正文,然后我们可以存储或做任何我们想做的事情 它完全可以工作,但问题是它只为第一封邮件提供了正文,第二封邮件提供了带有html标记的正文 我正在使用JavaMail API 我该怎么办 提前谢谢 致以最良好的祝愿, 阿里 输出:从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
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