仓库地址
MailListen: 监听邮箱未读文件,对满足条件的邮件处理转发给webhook地址 (gitee.com)
欢迎一起交流学习
业务背景
当服务器的告警日志信息发送到邮箱时,我们无法及时查收,这可能导致问题扩大,需要一个全天候的服务监听邮箱的邮件
服务流程
定时执行邮件列表过滤流程,当检测到是未读的告警日志邮件时,将邮件富文本转为普通文本,经过post json方式推送至webhook地址(这里使用飞书机器人)
这样的做法可以保证日志信息的完整,并且在服务宕机时,还可以在重启时继续无损运行
邮件列表过滤
将符合条件的邮件(主题包含yml文件中配置的filterTitle字符串)的部件组合为一个String字符串,注意这里无法处理附件
public void fetchMail() throws InterruptedException {
if (OPEN) {
System.out.println("邮件转发已被关闭");
return;
}
if(LOCK.tryLock(1, TimeUnit.SECONDS)){
try {
openFolder();
int size = folder.getMessageCount();
System.out.println("邮件个数:" + size);
if (skip != null && skip && messageLastSize != null && messageLastSize == size) {
System.out.println("跳过未读邮件检测");
} else {
messageLastSize = size;
for (int i = 0; i < size; i++) {
Message message = folder.getMessage(size - i);
String subject = message.getSubject();