package com.xxl.job.admin.core.alarm.impl; package .var.folders.cl.9twcgjfx4vsg5zl73c6wxmvm0000gn.T; import com.xxl.job.admin.core.alarm.JobAlarm; import com.xxl.job.admin.core.conf.XxlJobAdminConfig; import com.xxl.job.admin.core.model.XxlJobGroup; import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobLog; import com.xxl.job.admin.core.util.I18nUtil; import java.text.MessageFormat; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; @Component public class EmailJobAlarm implements JobAlarm { private static Logger logger = LoggerFactory.getLogger(com.xxl.job.admin.core.alarm.impl.EmailJobAlarm.class); public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog) { boolean alarmResult = true; if (info != null && info.getAlarmEmail() != null && info.getAlarmEmail().trim().length() > 0) { String alarmContent = "Alarm Job LogId=" + jobLog.getId(); if (jobLog.getTriggerCode() != 200) alarmContent = alarmContent + "
TriggerMsg=
" + jobLog.getTriggerMsg(); if (jobLog.getHandleCode() > 0 && jobLog.getHandleCode() != 200) alarmContent = alarmContent + "
HandleCode=" + jobLog.getHandleMsg(); XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(Integer.valueOf(info.getJobGroup()).intValue()); String personal = I18nUtil.getString("admin_name_full"); String title = I18nUtil.getString("jobconf_monitor"); String content = MessageFormat.format(loadEmailJobAlarmTemplate(), new Object[] { (group != null) ? group .getTitle() : "null", Integer.valueOf(info.getId()), info .getJobDesc(), alarmContent }); Set emailSet = new HashSet<>(Arrays.asList(info.getAlarmEmail().split(","))); for (String email : emailSet) { try { MimeMessage mimeMessage = XxlJobAdminConfig.getAdminConfig().getMailSender().createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(XxlJobAdminConfig.getAdminConfig().getEmailFrom(), personal); helper.setTo(email); helper.setSubject(title); helper.setText(content, true); XxlJobAdminConfig.getAdminConfig().getMailSender().send(mimeMessage); } catch (Exception e) { logger.error(">>>>>>>>>>> xxl-job, job fail alarm email send error, JobLogId:{}", Long.valueOf(jobLog.getId()), e); alarmResult = false; } } } return alarmResult; } private static final String loadEmailJobAlarmTemplate() { String mailBodyTemplate = "
" + I18nUtil.getString("jobconf_monitor_detail") + ":\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
" + I18nUtil.getString("jobinfo_field_jobgroup") + "" + I18nUtil.getString("jobinfo_field_id") + "" + I18nUtil.getString("jobinfo_field_jobdesc") + "" + I18nUtil.getString("jobconf_monitor_alarm_title") + "" + I18nUtil.getString("jobconf_monitor_alarm_content") + "
{0}{1}{2}" + I18nUtil.getString("jobconf_monitor_alarm_type") + "{3}
"; return mailBodyTemplate; } }