1、在applicationContent.xml配置javaMailjava
<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${邮箱服务地址}"></property> <property name="port" value="25"></property> <property name="username" value="${发送方邮箱}"></property> <property name="password" value="${密码}"></property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">3000</prop> </props> </property> </bean>
2、编写发送邮件的组建spring
public class EmailService { private static final Logger log = LoggerFactory.getLogger(EmailService.class); @Autowired private JavaMailSenderImpl javaMailSender; /** * 发送邮件 * @param subject * @param content * @param to */ public void sendMail(String subject, String content, String... to) { log.info("send email subject:{}, to:{}, subject:{}", subject, to, content); MimeMessage objMimeMessage = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(objMimeMessage, true, "utf-8"); try { helper.setFrom(javaMailSender.getUsername(),"XX异常"); } catch (UnsupportedEncodingException e) { helper.setFrom(javaMailSender.getUsername()); } helper.setSubject(subject); helper.setTo(to); helper.setText(content,true); } catch (MessagingException e) { log.error("发送邮件出错.",e); } javaMailSender.send(objMimeMessage); } }
3、配置异常捕获类apache
/** * 自定义的全局异常处理类 */ public class CustomMappingExceptionResolver extends SimpleMappingExceptionResolver implements HandlerExceptionResolver{ private static Logger logger = LoggerFactory.getLogger(CustomMappingExceptionResolver.class); @Autowired private ExceptionCacheService exceptionCacheService; /** * 这里异常信息记录到cache中, 而后启动一个任务去查询cache中是否有异常信息;有则发送邮件 * 若是不放cache能够直接发送邮件 * @param request * @param response * @param handler * @param ex * @return */ @Override protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { exceptionCacheService.doExceptionStore(ex); if (ex.getClass().getName().equals("org.apache.catalina.connector.ClientAbortException")) { return super.doResolveException(request, response, handler, ex); } logger.error("请求悲剧了!!", ex); if (WebUtils.isAjaxRequest(request)) { ResponseEntity entity = ResponseEntity.failed(); entity.setMsg("服务器异常"); try { WebUtils.writeJsonResponse(response, entity); } catch (IOException e) { logger.error("输出json竟然也异常了!!", e); } return null; } else { return super.doResolveException(request, response, handler, ex); } } @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { ModelAndView mav = new ModelAndView(); mav.setViewName("500"); exceptionCacheService.doExceptionStore(ex); return mav; } }
固然要配置该类json
<bean class="com.xxx.handler.CustomMappingExceptionResolver" />