跳至主要內容

📩邮箱监听

wind大约 2 分钟

介绍

邮箱监听可以监听到某个IMAP协议邮箱中收到的邮件,并对其进行一定的处理。
邮箱监听这个需求可能并不常见,这也是我偶然间遇到的一个需求,但是这方面相关的资料和框架都比较少,所以才有了这个实现。

配置

配置类位于org.dromara.email.comm.config.MailImapConfig

 imap服务地址
 String imapServer
 
 要监听的邮箱账号
 String username
 
 要监听的邮箱授权码或密码
 String accessToken
 
 监听周期(秒)默认5秒
 Integer cycle

使用方式

邮箱监听的使用方式与邮件发送的使用方式很相似,有着相同的思路,不过不同的是这里多了一个回调的接收,用于处理收到的邮件

添加一个配置至系统中,并绑定接收消息的对象

邮箱监听可以同时监听多个邮箱,且互不干扰,并且可以根据自己的需求,开启或者停止某个邮箱的监听

MonitorFactory.put("自定义的标识",MailImapConfig配置,Monitor回调对象)

开始监听指定标识的邮箱

MonitorFactory.start("put中自定义的标识")

停止监听指定标识的邮箱

停止监听后,此配置并未清除,可以随时重新开启监听

MonitorFactory.stop("put中自定义的标识")

Monitor回调对象

Monitor是一个函数式接口,用于接收框架所监听到的邮件信息
如果我们要将处理完成的邮件标记为已读,则需要返回true 如果需要标记为未读,则返回false
Monitor方法签名如下:

    /**
     *  monitor
     * <p> 监听系统的邮件消息,
     * @param monitorMessage 系统监听到的消息内容
     * @return true为标记已读,否则不标记
    */
boolean monitor(MonitorMessage monitorMessage);

MonitorMessage 对象

MonitorMessage为框架监听到的邮件的内容信息,我们可以针对邮件中的内容做出符合自己需求的处理
内部数据如下:

public class MonitorMessage {

    /** 邮件主题*/
    private String title;

    /** 邮件文字内容*/
    private String text;

    /** 邮件发送时间*/
    private Date sendDate;

    /** 邮件内容(复杂内容)*/
    private Multipart body;

    /** 发送人*/
    private String fromAddress;

    /** 邮件消息编号*/
    private Integer messageIndex;

    /** 接收时间*/
    private Long acceptTime;
}