当前位置: 首页 > 面试题库 >

JavaMail使用IMAP读取最近未读的邮件

范轶
2023-03-14
问题内容

我需要从Gmail检索未读邮件。我正在使用Java Mail
API。默认情况下,此API从最早的邮件检索到最新的邮件。但是我需要先检索最近的邮件。可能吗?提前致谢。


问题答案:

这是例子。不要忘记在类路径中添加javax.mail。

import javax.mail.*;
import javax.mail.search.FlagTerm;
import java.util.*;

public class GmailFetch {

  public static void main( String[] args ) throws Exception {

    Session session = Session.getDefaultInstance(new Properties( ));
    Store store = session.getStore("imaps");
    store.connect("imap.googlemail.com", 993, "username@gmail.com", "password");
    Folder inbox = store.getFolder( "INBOX" );
    inbox.open( Folder.READ_ONLY );

    // Fetch unseen messages from inbox folder
    Message[] messages = inbox.search(
        new FlagTerm(new Flags(Flags.Flag.SEEN), false));

    // Sort messages from recent to oldest
    Arrays.sort( messages, ( m1, m2 ) -> {
      try {
        return m2.getSentDate().compareTo( m1.getSentDate() );
      } catch ( MessagingException e ) {
        throw new RuntimeException( e );
      }
    } );

    for ( Message message : messages ) {
      System.out.println( 
          "sendDate: " + message.getSentDate()
          + " subject:" + message.getSubject() );
    }
  }
}


 类似资料:
  • 问题内容: 我有一个包含GUI的应用程序,它正在使用Javamail。当我打开它时,我必须在上看到发送到我的邮件的消息。 问题是当我编写代码时,它仅显示最后发送的消息。 如何在收件箱中显示所有新邮件? 这是我的代码: 问题答案: 您在以下消息循环中反复将的文本设置为相同的内容: 您应该使用所有消息构建一个,然后设置 然后,您可以通过使用增强的for循环并使用的方法使这一点更加清晰。

  • 我正在运行一个cron作业,它执行用于读取gmail的python脚本(2分钟间隔)。我使用imaplib阅读新邮件。直到昨天,这一直工作正常。突然它抛出了错误 imaplib.error:[AUTHENTICATIONFAILED]无效的凭据(失败) 有时我得到以下错误 当我在不同的机器上运行相同的脚本时。它工作正常。我假设主机已被列入黑名单或类似的东西。 我有什么选择?

  • 我试图使用JavaMail1.4 API阅读电子邮件帐户Office365文件夹中的电子邮件。

  • 我在试一个例子。在本例中,我们提到了使用spring-integration 2.0.3,但是我得到了一个NullPointerExpetion,为了解决这个问题,我遵循了这里提到的内容。但是如果我使用Spring-Integration2.1,那么我认为它需要Spring3.0。 问题:Spring2.5版本和spring-integration是否可以使用从IMAP读取电子邮件? 以下是我的项

  • 问题内容: 我正在使用javamail,但无法从Gmail电子邮件中获取HTML。我有以下内容: 上面所有方法都可以,但是我无法打印或获取实际的HTML或文本电子邮件。我只是得到某种InputStream,如何轻松处理以获得原始的电子邮件HTML? 我也尝试遍历消息,但这并没有使我走得太远: } 谢谢大家的帮助。 问题答案: 该对象包含电子邮件的正文。您需要阅读整个流,才能阅读整个消息。例如,该S

  • 问题内容: 我正在尝试在JavaMail API的帮助下通过IMAP访问来自Gmail帐户的电子邮件。我想知道为什么代码对一个电子邮件帐户有效,而对另一个电子邮件帐户无效。 我可以访问两个电子邮件帐户的文件夹。但是对于其中一个电子邮件帐户,无法访问其他文件夹,例如,它将引发异常。有人可以解释出什么问题了吗? 先感谢您。 这是代码: 问题答案: 是否有一个帐户使用非英语用户界面? Gmail文件夹名