我现在所在的公司,由于没有对应的运维人员,而且涉及到系统需要和第三方系统进行API对接,为了每天定时进行API测试,将测试结果进行通知开发,因此从成本角度考虑使用email邮件;
将下列依赖引入到POM文件,原则上只要引入第一个依赖就行,但是我本地工程一直引入后,还是无法识别相关方法,所有又加了第二个依赖;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency><dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version></dependency>
按照你想用邮件服务主机,配置你的发送邮件账号内容;
mail: host: smtp.qiye.aliyun.com username: support@mail.ahautoflow.com password: ******** default-encoding: utf-8 properties: mail: smtp: ssl: enable: true
如下图所示我的代码(代码写的烂忽喷,留点面子)
private void sendEmailMessage(String description){ List<SysDictData> dictDataList = sysDictTypeService.selectDictDataByType("api_monitor_email"); SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("support@mail.ahautoflow.com"); message.setSubject("通关服务平台API监控"); message.setText(description); if(dictDataList.isEmpty()){ message.setTo("938282597@qq.com"); try{ mailSender.send(message); } catch (Exception e){ e.printStackTrace(); } }else{ for (SysDictData dictData:dictDataList) { message.setTo(dictData.getDictValue()); try{ mailSender.send(message); } catch (Exception e){ e.printStackTrace(); } } }}
只要在对应代码中加上发送邮件内容,调用接口就行,很简单;
if(result.containsKey("resCode") && "0".equals(result.get("resCode").toString())){ if(result.containsKey("pros")){ JSONArray messageList = result.getJSONArray("pros"); String apiStr = JSON.toJSONString(messageList.get(0)); JSONObject apiMessage = JSONObject.parseObject(apiStr); if(apiMessage.containsKey("resultCode") && "0".equals(apiMessage.get("resultCode").toString())){ emailStr.append(timeStr+": 出口订单API测试新增功能成功"+"\n"); }else{ emailStr.append(timeStr+": 出口订单API测试新增功能失败,错误消息如下:"+ apiMessage.toString() +"\n"); } }else{ emailStr.append(timeStr+": 出口订单API测试新增功能,返回体异常"+"\n"); }}else { sendEmailMessage(timeStr + ": 出口订单API测试新增功能,服务异常。错误信息如下:" + result.toJSONString()); return;}