CuiQiuMailServiceImpl.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.cyksj.service.mail.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.date.DateTime;
  4. import cn.hutool.core.date.DateUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import cn.hutool.http.HttpRequest;
  7. import cn.hutool.http.HttpResponse;
  8. import cn.hutool.http.HttpUtil;
  9. import com.cyksj.common.util.Jsons;
  10. import com.cyksj.common.util.StringUtil;
  11. import com.cyksj.model.dto.CuiQiuEmailDetailDto;
  12. import com.cyksj.model.dto.CuiQiuEmailDto;
  13. import com.cyksj.model.dto.CuiQiuEmailResultDto;
  14. import com.cyksj.service.mail.CuiQiuMailService;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.stereotype.Service;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.stream.Collectors;
  21. /**
  22. * 项目名: yhlxj2
  23. * 文件名: CuiQiuMailServiceImpl
  24. * 创建者: JavaZou
  25. * 创建时间:2024/4/25 15:57
  26. */
  27. @Service
  28. @Slf4j
  29. public class CuiQiuMailServiceImpl implements CuiQiuMailService {
  30. private final static String CUI_QIU_TOKEN = "4ff0341ebf1747cd89a2d1a5a296b68b";
  31. //脆球域名id
  32. private final static String DOMAIN_ID = "1696913058045050661";
  33. //代收管理员邮件id
  34. private final static String ADMIN_MAIL_ID = "1696913058063659217";
  35. //PS 验证码官方
  36. private final static String PS_ADOBE = "Adobe";
  37. @Override
  38. public String getVerifyCode(String email) throws Exception {
  39. //获取近二十封邮件
  40. String url = "https://domain-open-api.cuiqiu.com/v1/message/list";
  41. Map<String, Object> params = new HashMap<>();
  42. //获取近五分钟的代收邮件
  43. //维度是天
  44. DateTime now = DateTime.now();
  45. params.put("token", CUI_QIU_TOKEN);
  46. params.put("mail_id", ADMIN_MAIL_ID);
  47. params.put("start_time", DateUtil.offsetDay(now, -1).toDateStr());
  48. params.put("end_time", DateUtil.offsetDay(now, 1).toDateStr());
  49. params.put("limit", 20);
  50. HttpRequest post = HttpUtil.createPost(url);
  51. post.form(params);
  52. HttpResponse execute = post.execute();
  53. CuiQiuEmailResultDto resultDto = Jsons.parseObject(execute.body(), CuiQiuEmailResultDto.class);
  54. List<CuiQiuEmailDto> list = resultDto.getData().getList();
  55. //获取邮箱对应的邮件
  56. list = list.stream().filter(emailInfo -> {
  57. CuiQiuEmailDto.CuiQiuUser from = emailInfo.getFrom().get(0);
  58. CuiQiuEmailDto.CuiQiuUser cuiQiuUser = emailInfo.getTo().get(0);
  59. if (StrUtil.equals(from.getName(), PS_ADOBE) && StrUtil.equals(cuiQiuUser.getAddress(), email)) {
  60. return true;
  61. }
  62. return false;
  63. }).collect(Collectors.toList());
  64. if (CollUtil.isNotEmpty(list)) {
  65. for (CuiQiuEmailDto cuiQiuEmailDto : list) {
  66. Long messageId = cuiQiuEmailDto.getId();
  67. try {
  68. String code = getVerifyCodeByEmail(messageId);
  69. if (StrUtil.isNotBlank(code)) {
  70. return code;
  71. }
  72. } catch (Exception e) {
  73. }
  74. }
  75. }
  76. return null;
  77. }
  78. public String getVerifyCodeByEmail(Long messageId) throws Exception {
  79. String url = "https://domain-open-api.cuiqiu.com/v1/message/detail";
  80. Map<String, Object> params = new HashMap<>();
  81. params.put("token", CUI_QIU_TOKEN);
  82. params.put("mail_id", ADMIN_MAIL_ID);
  83. params.put("message_id", messageId);
  84. HttpRequest post = HttpUtil.createPost(url);
  85. post.form(params);
  86. HttpResponse execute = post.execute();
  87. String body = execute.body();
  88. CuiQiuEmailDetailDto cuiQiuEmailDetailDto = Jsons.parseObject(body, CuiQiuEmailDetailDto.class);
  89. CuiQiuEmailDetailDto.Content content = cuiQiuEmailDetailDto.getData().getContent();
  90. String contentBody = content.getBody();
  91. String code = StrUtil.subWithLength(contentBody, contentBody.indexOf("ADOBE"), 215);
  92. return StringUtil.getVerifyCodePattern(code);
  93. }
  94. }