java - 如何使用Javamail仅检索40-50封电子邮件(例如Gmail)?

标签 java jakarta-mail

我正在尝试使用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 .

关于java - 如何使用Javamail仅检索40-50封电子邮件(例如Gmail)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51362451/

相关文章:

java - 使用 thymeleaf 模板通过 Spring 发送邮件

java - NoClassDefFoundError:无法初始化类 com.jidesoft.swing.JideSwingUtilities

java - RecyclerView 问题

java - 使用 JavaMail 发送邮件 - 端口 25、STARTTLS、身份验证

java - 让 javamail session 传输保持打开状态是否可以接受?

tomcat - 如何使用 JavaMail/Servlet 机制创建 ConfirmationURL?

java - 如何通过java mail api向多个收件人发送邮件

java - 如何用 "EXCEPTION_ACCES_VIOLATION"解决 fatal error "Failed to write core dump."

java - 访问 fragment 内的 TextView 会给出 NullPointerException

java - 更改数据库设计以改进 Spring Data JPA 软删除和查询身份验证