如何使用 Javamail 像 Gmail 一样只检索 40-50 封电子邮件?
How to retrieve only 40-50 email like Gmail using Javamail?
我正在尝试使用 javamail 检索我的收件箱,我已经这样做了,但是现在当我尝试加载代码时出现了问题,因为它读取了整个收件箱,所以需要花费很多时间来读取所有电子邮件,但我只想要那个应提取最近的几封电子邮件。
Properties properties = new Properties();
String host = "pop.gmail.com";// change accordingly
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", "995");
properties.put("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, username, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
LOG.info("messages.length---" + messages.length);
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
leadJSONObject = new JSONObject();
LOG.info("Email Number " + (i + 1));
LOG.info("This log is executed successfully");
leadJSONObject.put("emailFrom", message.getFrom()[0].toString());
leadJSONObject.put("emailSubject", message.getSubject());
leadJSONObject.put("emailText", message.getContent().toString());
planJSONArray.put(leadJSONObject);
}
//close the store and folder objects
emailFolder.close(false);
store.close();
请帮助我如何只阅读几封电子邮件。提前致谢。
您可能希望对消息进行计数,然后仅检索总数的一部分,例如前 50 条消息(如果不够,则更少):
int total = emailFolder.getMessageCount();
Message[] messages = emailFolder.getMessages(1,Math.min(total,50));
比照。 javax.mail.Folder.
的 javadoc
我正在尝试使用 javamail 检索我的收件箱,我已经这样做了,但是现在当我尝试加载代码时出现了问题,因为它读取了整个收件箱,所以需要花费很多时间来读取所有电子邮件,但我只想要那个应提取最近的几封电子邮件。
Properties properties = new Properties();
String host = "pop.gmail.com";// change accordingly
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", "995");
properties.put("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, username, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
LOG.info("messages.length---" + messages.length);
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
leadJSONObject = new JSONObject();
LOG.info("Email Number " + (i + 1));
LOG.info("This log is executed successfully");
leadJSONObject.put("emailFrom", message.getFrom()[0].toString());
leadJSONObject.put("emailSubject", message.getSubject());
leadJSONObject.put("emailText", message.getContent().toString());
planJSONArray.put(leadJSONObject);
}
//close the store and folder objects
emailFolder.close(false);
store.close();
请帮助我如何只阅读几封电子邮件。提前致谢。
您可能希望对消息进行计数,然后仅检索总数的一部分,例如前 50 条消息(如果不够,则更少):
int total = emailFolder.getMessageCount();
Message[] messages = emailFolder.getMessages(1,Math.min(total,50));
比照。 javax.mail.Folder.
的 javadoc