Java 电子邮件监听器

2024-02-12

我遇到了 IdleManager 类和 watch 方法,它使 imap 文件夹保持打开状态,并且理论上正在监视新消息,但如何让它在新电子邮件到达时输出或通知?

代码:

public static void main(String[] args) throws MessagingException, IOException {
    IMAPFolder folder = null;
    Store store = null;
    String subject = null;
    Flag flag = null;

    try 
    {
      Properties props = System.getProperties();
      props.setProperty("mail.store.protocol", "imaps");
      props.setProperty("mail.imaps.usesocketchannels", "true");

      Session session = Session.getDefaultInstance(props, null);

      ExecutorService es = Executors.newCachedThreadPool();
      final IdleManager idleManager = new IdleManager(session, es);

      store = session.getStore("imaps");
      store.connect("<mail>.com","<username>", "<password>");

      folder = (IMAPFolder) store.getFolder("INBOX"); 


      if(!folder.isOpen())
      folder.open(Folder.READ_ONLY);

      folder.addMessageCountListener(new MessageCountAdapter() {
          public void messagesAdded(MessageCountEvent ev) {
              Folder folder = (Folder)ev.getSource();
              Message[] msgs = ev.getMessages();
              System.out.println("Folder: " + folder +
                  " got " + msgs.length + " new messages");
              try {
                  // process new messages
                  idleManager.watch(folder); // keep watching for new messages
              } catch (MessagingException mex) {
                  // handle exception related to the Folder
              }
          }
      });
      idleManager.watch(folder);


      Message[] messages = folder.getMessages();
      System.out.println("No of Messages : " + folder.getMessageCount());
      System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount());
      System.out.println(messages.length);


      for (int i=0; i < messages.length;i++) 
      {

        System.out.println("*****************************************************************************");
        System.out.println("MESSAGE " + (i + 1) + ":");
        Message msg =  messages[i];

        subject = msg.getSubject();

        System.out.println("Subject: " + subject);
        System.out.println("From: " + msg.getFrom()[0]);
       System.out.println("To: "+msg.getAllRecipients()[0]);

      }
    }
    finally 
    {
      if (folder != null && folder.isOpen()) { folder.close(true); }
      if (store != null) { store.close(); }
    }

}

此代码仅获取并输出文件夹中已有的邮件,但不输出新传入的电子邮件。

如何让它输出或通知新收到的电子邮件?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 电子邮件监听器 的相关文章

  • 如何使用 Apache POI API 将图像添加到 pptx 中添加的图像占位符?

    我已经预定义了带有文本和图像占位符的 pptx 模板 我如何从模板访问和修改这些占位符 我可以使用 POI pptx API 直接将图像和文本添加到幻灯片中 但如何将其添加到模板的占位符中 请参阅链接以了解如何添加占位符来创建固定模板 ht
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t

随机推荐

  • 开始使用 RxJava 和 sqlite

    我正在学习 RxJava 并且已经阅读了几篇文章和视频 我对 RxJava 所提供的功能感到非常敬畏 所以我认为目前已经了解了响应式编程的全部内容 Dan Lew 的本教程 http blog danlew net 2014 09 15 g
  • mysqldump - 将多个数据库从单独的 mysql 帐户转储到一个文件

    我使用的标准 mysqldump 命令是 mysqldump opt databases dbname host dbhost user dbuser password dbpass gzip gt filename 转储多个数据库 mys
  • 通过performSelectorOnMainThread调用方法与普通方法调用

    谁能告诉我当我使用调用方法时有什么不同performSelectorOnMainThread并在没有执行选择器的情况下调用相同的方法 For Exa void sampleCALL 现在使用这两个场景调用此方法 self performSe
  • 动画播放与否取决于链接动画的animationRepeatCount

    我对 iOS 完全陌生 我正在开发一个具有许多帧动画的应用程序 一切都很顺利 直到我尝试用下面发布的方法制作最终动画 该方法是分配给内置文本到语音合成器的委托 func speechSynthesizer synthesizer AVSpe
  • 与 std::minmax_element 一起使用的步长/步长迭代器

    我有一个一维浮点数组 它表示 m n 行和列 浮点值表 我的要求是为每行和每列找到一个最小 最大元素 对于行 我可以通过使用 std minmax element 指定 n 个元素的范围来轻松完成此操作 但对于列 我需要使用步幅迭代器 因为
  • 共享内存——需要同步

    我见过一个项目 其中进程之间的通信是使用共享内存进行的 例如使用 CreateFileMapping在 Windows 下 并且每当其中一个进程想要通知共享内存中某些数据可用时 一种使用命名事件的同步机制会通知感兴趣的一方共享内存的内容发生
  • 在 csv 导入 pandas 期间跳过行

    我正在尝试使用导入 csv 文件pandas read csv 但是 我不想导入数据文件的第二行 0 索引的索引 1 的行 我不知道如何不导入它 因为该命令使用的参数似乎不明确 来自熊猫网站 skiprows 类似列表或整数 要跳过的行号
  • 具有lookbehind的正则表达式无法使用re.match工作

    以下是Python代码 import re line http google com procLine re match r lt http line if procLine group print line did not match r
  • R中的光栅层

    我有一个包含多个 adf 文件的 GIS 项目 由于我是 ArcMap 的新手 我不知道如何使用它们 我设法使用光栅库将它们读入 r r lt raster w001001 adf 当查看 sum r 时 我得到 sum r class R
  • 加载前如何与页面交互?

    我在 python 中使用 selenium 时遇到了问题 我正在尝试与这样的页面进行交互 driver window manager get url iframe driver window manager find elements b
  • Squid:转发到另一个代理(带有父代理的身份验证详细信息)

    简而言之 我正在寻找一种简单的方法来执行以下操作 如果可能 请提供代码示例 在我的计算机上设置并启动代理服务器 假设地址为 10 10 200 200 6767 该服务器可以捕获来自我手机的所有 Web 请求 一旦来自手机的请求到达此代理
  • IOS 是否以任何方式支持 Active Directory?

    我知道这是一个非常普遍的问题 我不是在寻找代码或任何东西 即使是一个链接或简短的解释也会很好 特别是寻找一种从内部 IOS 应用程序浏览基于网络的活动目录的方法 使用云或电子邮件不是一个选择 可能吗 有一个IBMdeveloperWorks
  • 运行 Angular 编译器-cli (ngc);找不到模块“@angular/core”

    我尝试使用以下命令安装 Angular 编译器 cli ngc npm install angular compiler cli typescript angular platform server angular compiler 安装似
  • 如何使用 Firebase Auth 创建应用程序集成测试?

    我创建了一个 Flutter 应用程序 我的应用程序使用 Firebase Auth 我需要为我的应用程序创建集成测试 但如果需要输入登录名和密码 我不知道如何执行此操作 我是颤振新手 这对我来说是一个问题 我将不胜感激任何帮助 对于集成测
  • 是否可以传递立即调用的函数表达式的执行上下文

    考虑以下代码 function var a 5 var someFunc function function anotherFunc window myGlobalObj init function and somehow here I w
  • 无法在 gradle 文件中应用“android-reporting”

    当我把apply plugin android reporting 按照建议在我的项目级别 build gradle 文件中here https developer android com studio test command line
  • Notepad++ 在左侧显示打开的文件

    在 Notepad 中 有没有办法在左侧列表中显示当前打开的文件列表 而不是使用默认的选项卡视图 我希望它类似于 TextPad 显示当前打开的文件的方式 我指的不是允许我打开新文件的资源管理器 我只是不喜欢打开许多文件时顶部的选项卡 设置
  • 带有错误句柄的自定义验证 Ninja 表单

    我在 WordPress 安装中使用 Ninja Form 插件 我的表单有 3 个输入文本字段 在按下提交按钮后 我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一 如果该值尚不存在 则不会发生任何情况 Ninja
  • Python argparse 条件要求

    如何设置 argparse 如下 if 2 is on the command line no other arguments are required if 2 is not on the command line 3 and 4 arg
  • Java 电子邮件监听器

    我遇到了 IdleManager 类和 watch 方法 它使 imap 文件夹保持打开状态 并且理论上正在监视新消息 但如何让它在新电子邮件到达时输出或通知 代码 public static void main String args t