我正在尝试使用Javamail api在Gmail中获取最后发送的邮件。这是代码 -
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imap");
try{
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imap");
store.connect(mailbox, mailId, passwod);
sent = store.getFolder("[Gmail]/Sent Mail");
int totalSentMails = sent.getMessageCount();
sent.open(Folder.READ_ONLY);
Message sentmesage = sent.getMessage(totalSentMails);
}
catch (NoSuchProviderException e){
e.printStackTrace();
System.exit(1);
}
由于getMessage计数返回一个比实际邮件大得多的数字,我得到一个IndexOutOfBoundsException。
如何使用javamail api从Gmail获取确切的邮件数量? 我得到的错误是 -
java.lang.IndexOutOfBoundsException: 1986 > 1970
1986是上面提取的totalSentMails的值,1970年是发送邮件的实际数量
答案 0 :(得分:0)
**
**
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect("imap.gmail.com", "xxxxxxx@gmail.com", "gmailpassword");
Folder[] folderList = store.getFolder("[Gmail]").list();
for (int i = 0; i < folderList.length; i++) {
System.out.println(folderList[i].getFullName());
}
Folder inbox = store.getFolder("[Gmail]/Sent Mail");
inbox.open(Folder.READ_ONLY);
Message msg = inbox.getMessage(inbox.getMessageCount());
Address[] in = msg.getFrom();
for (Address address : in) {
System.out.println("FROM:" + address.toString());
}
Multipart mp = (Multipart) msg.getContent();
BodyPart bp = mp.getBodyPart(0);
System.out.println("Bcc User NAme :"+InternetAddress.toString(msg.getRecipients(Message.RecipientType.BCC)));
System.out.println("SENT DATE:" + msg.getSentDate());
System.out.println("SUBJECT:" + msg.getSubject());
System.out.println("CONTENT:" + bp.getContent());
} catch (Exception mex) {
mex.printStackTrace();
}
这段代码非常适合工作..享受:)。