SmsUtil.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.caimei365.tools.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import java.io.BufferedReader;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStream;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9. import java.nio.charset.StandardCharsets;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. /**
  13. * 短信工具类
  14. * 创蓝云智短信平台:https://zz.253.com/control/login
  15. *
  16. * @author : Charles
  17. * @date : 2021/6/17
  18. */
  19. public class SmsUtil {
  20. /** key */
  21. private static final String ACCOUNT = "account";
  22. private static final String PASSWORD = "password";
  23. /** 通知短信 账户 */
  24. private static final String ACCOUNT_NOTICE = "N2532063";
  25. private static final String PASSWORD_NOTICE = "jzVvYmuP4D7f1b";
  26. /** 验证码短信 账户 */
  27. private static final String ACCOUNT_YZM = "YZM6372171";
  28. private static final String PASSWORD_YZM = "1L8ZaIEW7fa3ca";
  29. /** 营销短信 账户 */
  30. private static final String ACCOUNT_ADS = "M1666161";
  31. private static final String PASSWORD_ADS = "TO3xSGvEUk6ddc";
  32. /** 请求地址 */
  33. private static final String SMS_URL = "http://smssh1.253.com/msg/send/json";
  34. private static String prof;
  35. @Value("${caimei.coreDomain}")
  36. public void setProf(String profs){
  37. prof=profs;
  38. };
  39. private SmsUtil(){}
  40. /**
  41. * 发送短信
  42. *
  43. * @param type 短信类型:1通知短信,2验证码短信,3营销短信
  44. * @param mobile 手机号
  45. * @param content 短信内容
  46. */
  47. public static String sendSms(Integer type, String mobile, String content){
  48. JSONObject params = new JSONObject();
  49. if (null != type && 2 == type) {
  50. // 验证码短信
  51. params.put(ACCOUNT, ACCOUNT_YZM);
  52. params.put(PASSWORD, PASSWORD_YZM);
  53. } else if (null != type && 3 == type) {
  54. // 营销短信
  55. params.put(ACCOUNT, ACCOUNT_ADS);
  56. params.put(PASSWORD, PASSWORD_ADS);
  57. } else {
  58. // 通知短信
  59. params.put(ACCOUNT, ACCOUNT_NOTICE);
  60. params.put(PASSWORD, PASSWORD_NOTICE);
  61. }
  62. // 手机号
  63. params.put("phone", mobile);
  64. // 短信内容
  65. params.put("msg", content);
  66. // 是否需要状态报告
  67. params.put("report", "true");
  68. String requestContent = params.toString();
  69. URL url;
  70. try {
  71. List<String> list = new ArrayList<>();
  72. list.add("15917362709");
  73. list.add("15814011616");
  74. list.add("13100721916");
  75. list.add("15113936829");
  76. list.add("15827317748");
  77. list.add("18476937515");
  78. if (prof.contains("core.caimei365.com") || list.contains(mobile)) {
  79. url = new URL(SMS_URL);
  80. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  81. connection.setRequestMethod("POST");
  82. connection.setConnectTimeout(10000);
  83. connection.setReadTimeout(10000);
  84. // 发送POST请求必须设置如下两行
  85. connection.setDoOutput(true);
  86. connection.setDoInput(true);
  87. connection.setRequestProperty("Charset", "UTF-8");
  88. connection.setRequestProperty("Content-Type", "application/json");
  89. connection.connect();
  90. OutputStream os=connection.getOutputStream();
  91. os.write(requestContent.getBytes(StandardCharsets.UTF_8));
  92. os.flush();
  93. StringBuilder sb = new StringBuilder();
  94. int httpRspCode = connection.getResponseCode();
  95. if (httpRspCode == HttpURLConnection.HTTP_OK) {
  96. // 开始获取数据
  97. BufferedReader br = new BufferedReader(
  98. new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
  99. String line;
  100. while ((line = br.readLine()) != null) {
  101. sb.append(line);
  102. }
  103. br.close();
  104. return sb.toString();
  105. }
  106. }
  107. } catch (Exception e) {
  108. e.printStackTrace();
  109. }
  110. return null;
  111. }
  112. }