package com.zbkj.common.utils; import com.alibaba.fastjson.JSONObject; import com.aliyun.dysmsapi20170525.models.SendBatchSmsResponse; import com.aliyun.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import com.aliyun.tea.TeaException; import com.aliyun.teaopenapi.models.Config; import com.zbkj.common.constants.VehicleInfoConstants; import com.zbkj.common.vo.SendSmsVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.*; /** * 发送短信工具——阿里云 * * @author chenbing * @date 2022/4/26 8:07 */ public class SendSmsUtils { private static final Logger logger = LoggerFactory.getLogger(SendSmsUtils.class); public static void main(String[] args) throws Exception { // String[] phoneNumbers = {"19821225203","15639016820","17306226976","15364268364","18602130625","15921836387"}; String[] phoneNumbers = {"19821225203","15639016820","17306226976","15364268364","15921836387"}; for (String phoneNumber : phoneNumbers) { String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuilder sb = new StringBuilder(6); for (int i = 0; i < 6; i++) { int randomIndex = random.nextInt(characters.length()); char randomChar = characters.charAt(randomIndex); sb.append(randomChar); } sendSms(phoneNumber,sb.toString()); Thread.sleep(2000); } } private static void sendSms(String phoneNumber,String code) throws Exception { SendSmsVo sendSmsVo = new SendSmsVo(); sendSmsVo.setAccessKeyIdSms("LTAI5tJ7Rq5y2BxVe6bJDcRH"); sendSmsVo.setAccessKeySecretSms("4TsClsbjma4lekYiH3KHS7CcLpdHoC"); sendSmsVo.setTemplateParam(JSONObject.toJSONString(saveSuccess_Link(code))); sendSmsVo.setSignName(VehicleInfoConstants.SEND_SMS_OF_SIGN_NAME); // sendSmsVo.setTempLateCode("SMS_490825093"); sendSmsVo.setTempLateCode("SMS_490635088"); sendSmsVo.setPhoneNumber(phoneNumber); SendSmsUtils.sendSms(sendSmsVo); } private static HashMap saveSuccess_Link(String code){ HashMap justPram = new HashMap<>(); justPram.put("preNumber", "12"); justPram.put("carNumber", "6"); // justPram.put("code", code); justPram.put("time", DateUtil.nowDateTime("yyyy-MM-dd HH:mm:ss")); return justPram; } private static HashMap call_Link(String code){ HashMap justPram = new HashMap<>(); justPram.put("areaName", "东厂区-高压"); // justPram.put("code",code); return justPram; } /** * 使用AK&SK初始化账号Client * * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { Config config = new Config() // 您的AccessKey ID .setAccessKeyId(accessKeyId) // 您的AccessKey Secret .setAccessKeySecret(accessKeySecret); // 短信发送访问域名 Send SMS to access domain name "dysmsapi.aliyuncs.com" config.endpoint = VehicleInfoConstants.SEND_SMS_TO_ACCESS_DOMAIN_NAME; return new com.aliyun.dysmsapi20170525.Client(config); } /** * @Description:发送短信 * @author:chenbing * @date 2023/1/4 10:13 */ public static Boolean sendSms(SendSmsVo sendSmsVo) throws Exception { com.aliyun.dysmsapi20170525.Client client = SendSmsUtils.createClient(sendSmsVo.getAccessKeyIdSms(), sendSmsVo.getAccessKeySecretSms()); SendSmsRequest sendSmsRequest = new SendSmsRequest() .setPhoneNumbers(sendSmsVo.getPhoneNumber()) .setSignName(sendSmsVo.getSignName()) .setTemplateCode(sendSmsVo.getTempLateCode()) .setTemplateParam(sendSmsVo.getTemplateParam()); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); logger.info("开始发送短信......"); try { // 复制代码运行请自行打印 API 的返回值 SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime); String code = sendSmsResponse.getBody().getCode(); logger.info("code--->{}", code); Map headers = sendSmsResponse.getHeaders(); logger.info("==========发送短信headers=========\n" + headers); if (!com.aliyun.teautil.Common.equalString(code, "OK")) { logger.info("发送失败......"); logger.info("错误信息: {}", sendSmsResponse.body.message + ""); return false; } logger.info("发送成功......"); } catch (TeaException error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message System.out.println(error.getMessage()); // 诊断地址 System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message System.out.println(error.getMessage()); // 诊断地址 System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } return true; } /** * @Description:批量发送短信 * @author:chenbing * @date 2023/4/14 11:21 */ public static Boolean sendSmsList(SendSmsVo sendSmsVo) throws Exception { System.getProperties().clear(); com.aliyun.dysmsapi20170525.Client client = SendSmsUtils.createClient(sendSmsVo.getAccessKeyIdSms(), sendSmsVo.getAccessKeySecretSms()); List phones = Arrays.asList(sendSmsVo.getPhoneNumber().split(",")); List sginNames = new ArrayList<>(); List templates = new ArrayList<>(); for (String phone : phones) { sginNames.add(sendSmsVo.getSignName()); templates.add(sendSmsVo.getTemplateParam()); } com.aliyun.dysmsapi20170525.models.SendBatchSmsRequest sendBatchSmsRequest = new com.aliyun.dysmsapi20170525.models.SendBatchSmsRequest() .setTemplateCode(sendSmsVo.getTempLateCode()) .setPhoneNumberJson(JSONObject.toJSONString(phones)) .setSignNameJson(JSONObject.toJSONString(sginNames)) .setTemplateParamJson(JSONObject.toJSONString(templates)); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { // 复制代码运行请自行打印 API 的返回值 SendBatchSmsResponse sendBatchSmsResponse = client.sendBatchSmsWithOptions(sendBatchSmsRequest, runtime); String code = sendBatchSmsResponse.getBody().getCode(); logger.info("code--->{}", code); Map headers = sendBatchSmsResponse.getHeaders(); logger.info("==========批量发送短信headers=========\n" + headers); if (!com.aliyun.teautil.Common.equalString(code, "OK")) { logger.info("发送失败......"); logger.info("错误信息: {}", sendBatchSmsResponse.body.message + ""); return false; } logger.info("发送成功......"); } catch (TeaException error) { // 如有需要,请打印 error com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 如有需要,请打印 error com.aliyun.teautil.Common.assertAsString(error.message); } return true; } }