📩邮箱监听
大约 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;
}