SendMsgUtil.java
/** * Created on 2018/3/24. * Description: */ public class SendMsgUtil { /** * 短信发送接口(多个账号以逗号','分隔),支持手机号和工号(但当工号下有多个手机号码时发送失败) * * @param destAddrs 短信接收人列表 * @param content 短信内容 * @return */ public static String sendSMS(String destAddrs, String content) { if (null == destAddrs || destAddrs.isEmpty()) { throw new RuntimeException("check parameter, sms address is empty"); } if (null == content || content.isEmpty()) { throw new RuntimeException("check parameter, sms content is empty"); } OpenPlatformClient openPlatformClient = OpenPlatformClient.getInstance(); Map<String, String> map = new HashMap<>();//业务参数 map.put("destAddr", destAddrs); map.put("smContent", content); String result = openPlatformClient.post(MsgType.sendSMS.name(), map); return result; } /** * * @param mainAddrs 收件人邮件地址列表 “,”分隔 * @param ccAddrs 抄送人邮件地址列表 “,”分隔 * @param bccAddrs 密送人邮件地址列表 “,”分隔 * @param subject 主题 * @param content 内容 * @return */ public static String sendEmail(String mainAddrs, String ccAddrs, String bccAddrs, String subject, String content) { if (null == mainAddrs || mainAddrs.isEmpty()) { throw new RuntimeException("check parameter, email address is empty"); } if (null == subject || subject.isEmpty()) { throw new RuntimeException("check parameter, email subject is empty"); } if (null == content || content.isEmpty()) { throw new RuntimeException("check parameter, email content is empty"); } List<String> ccAddrList = null; if (null != ccAddrs && !ccAddrs.isEmpty()) { ccAddrList = Arrays.asList(ccAddrs.split(ADDR_SEPARATOR_COMMA)); } List<String> bccAddrList = null; if (null != bccAddrs && !bccAddrs.isEmpty()) { bccAddrList = Arrays.asList(bccAddrs.split(ADDR_SEPARATOR_COMMA)); } return sendEmail(Arrays.asList(mainAddrs.split(ADDR_SEPARATOR_COMMA)), ccAddrList, bccAddrList, subject, content); } /** * 邮件发送接口(多个账号以分号';'分隔),支持工号和邮箱地址 * * @return */ public static String sendEmail(List<String> mainAddrs, List<String> ccAddrs, List<String> bccAddrs, String subject, String content) { OpenPlatformClient openPlatformClient = OpenPlatformClient.getInstance(); if (null == mainAddrs || mainAddrs.size() == 0) { throw new RuntimeException("check parameter, email address list is empty"); } if (null == subject || subject.isEmpty()) { throw new RuntimeException("check parameter, email subject is empty"); } if (null == content || content.isEmpty()) { throw new RuntimeException("check parameter, email content is empty"); } Map<String, String> map = new HashMap<>();//业务参数 map.put("address", String.join(ADDR_SEPARATOR_SEMICOLON, mainAddrs)); if (null != ccAddrs && ccAddrs.size() > 0) { map.put("ccAddr", String.join(ADDR_SEPARATOR_SEMICOLON, ccAddrs)); //抄送 } if (null != bccAddrs && bccAddrs.size() > 0) { map.put("bccAddr", String.join(ADDR_SEPARATOR_SEMICOLON, bccAddrs)); //密送 } map.put("subject", subject); map.put("content", content); String result = openPlatformClient.post(MsgType.sendEmail.name(), map); return result; } /** * 向多人发送espace消息 * @param accounts 联系人列表“,"分隔 * @param content 消息内容 * @return */ public static String SendMulEspace(String accounts, String content) { if (null == accounts || accounts.isEmpty()) { throw new RuntimeException("check parameter, eSpace accounts is empty"); } if (null == content || content.isEmpty()) { throw new RuntimeException("check parameter, eSpace message is empty"); } return _SendMulEspace(accounts, content).toString(); } private static SendEspacePO _SendMulEspace(String accounts, String content) { String[] accountArr = accounts.split(ADDR_SEPARATOR_COMMA); SendEspacePO retObj = new SendEspacePO(); List<SendEspacePO.OneResult> succList = new ArrayList<>(); List<SendEspacePO.OneResult> failList = new ArrayList<>(); for (String account : accountArr) { SendEspacePO.OneResult one = new SendEspacePO.OneResult(); String ret; boolean flag = true; try { ret = sendESpace(account, content); } catch (Exception e) { ret = e.getLocalizedMessage(); flag = false; } one.setAccount(account); one.setMessage(ret); if (flag && CommonUtil.checkCloudPagerResult(ret)) { succList.add(one); } else { failList.add(one); } } retObj.setSuccess(succList); retObj.setFailure(failList); return retObj; } /** * eSpace发送接口(仅支持单发) * * @return */ public static String sendESpace(String targetAccount, String content) { OpenPlatformClient openPlatformClient = OpenPlatformClient.getInstance(); if (null == targetAccount || targetAccount.isEmpty()) { throw new RuntimeException("check parameter, eSpace account is empty"); } if (null == content || content.isEmpty()) { throw new RuntimeException("check parameter, eSpace message is empty"); } Map<String, String> map = new HashMap<>();//业务参数 map.put("targetAccount", targetAccount);//接收工号 map.put("content", content); String result = openPlatformClient.post(MsgType.sendEspace.name(), map); //接口方法 return result; } public static final String ADDR_SEPARATOR_COMMA = ","; public static final String ADDR_SEPARATOR_SEMICOLON = ";"; }
SendSMS.java
/** * Created on 2018/3/24. * Description: */ public class SendSMS { /** * @param args */ public static void main(String[] args) { checkParameter(args); String result = null; try { String content = args[0]; String addStr = args[1]; result = SendMsgUtil.sendSMS(addStr, content); } catch (Exception e) { CommonUtil.exitWithErrorMsg("send sms exception, details:" + e.getLocalizedMessage()); } if (!checkResult(result)) { CommonUtil.exitWithErrorMsg("send sms error, details:" + result); } System.exit(CommonConstants.RET_SUCCESS); } private static boolean checkResult(String result) { return null != result && result.contains(CommonConstants.CLOUDPAGER_RET_SUCCESS); } private static void checkParameter(String[] args) { if (null == args || args.length < 2) { showHelp(); System.exit(CommonConstants.RET_FAIL); } String addStr = args[1]; String[] addArr = addStr.split(SendMsgUtil.ADDR_SEPARATOR_COMMA); for (String phoneNum : addArr) { } } private static void showHelp() { String lineSeparator = System.lineSeparator(); StringBuffer sb = new StringBuffer("Usage:"); sb.append(lineSeparator).append("./sendsms.sh need two parameters.").append(lineSeparator); sb.append("First parameter: message content.").append(lineSeparator); sb.append("Second parameter: phone num list(separate by \",\")."); System.out.println(sb.toString()); } }
SendMsg.java
/** * Created on 2018/3/28. * Description: * 统一命令入口 */ public class SendMsg { /** * @param args * * type=sendSMS: [sendSMS] [content] [phone number] * type=sendEspace: [sendEspace] [content] [job number] * type=sendEmail: [sendEmail] [subject] [content] [email] [Cc(Optional)] [Bcc(Optional)] */ public static void main(String[] args) { checkParameter(args); String result = dispatchCmd(args); if (!CommonUtil.checkCloudPagerResult(result)) { CommonUtil.exitWithErrorMsg("send message error, details:" + result); } System.exit(CommonConstants.RET_SUCCESS); } private static String dispatchCmd(String[] args) { String result = null; MsgType msgType = MsgType.valueOf(args[0]); try { if (MsgType.sendSMS == msgType) { result = SendMsgUtil.sendSMS(args[2], args[1]); } else if(MsgType.sendEspace == msgType) { result = SendMsgUtil.SendMulEspace(args[2], args[1]); } else if(MsgType.sendEmail == msgType){ String ccAddr = null; String bccAddr = null; if (args.length == 5) { ccAddr = args[4]; } if (args.length == 6) { ccAddr = args[4]; bccAddr = args[5]; } result = SendMsgUtil.sendEmail(args[3], ccAddr, bccAddr, args[1], args[2]); } } catch (Exception e) { CommonUtil.exitWithErrorMsg("send sms exception, details:" + e.getLocalizedMessage()); } return result; } private static void checkParameter(String[] args) { if (null == args || args.length < 3) { showHelp(); System.exit(CommonConstants.RET_FAIL); } String type = args[0]; if (null == MsgType.valueOf(type)) { CommonUtil.exitWithErrorMsg("unsupported message type[sendSMS/sendEspace/sendEmail]"); } if (MsgType.sendEmail == MsgType.valueOf(type)) { if (args.length < 4) { showHelp(); System.exit(CommonConstants.RET_FAIL); } } } private static void showHelp() { String lineSeparator = System.lineSeparator(); StringBuffer sb = new StringBuffer("Usage:"); sb.append(lineSeparator).append("script need at least three parameters, format: [type] [] [].. ").append(lineSeparator); sb.append("1 type=sendSMS: [sendSMS] [content] [phone number(separate by \",\")] ").append(lineSeparator); sb.append("2 type=sendEspace: [sendEspace] [content] [job number(separate by \",\")] ").append(lineSeparator); sb.append("3 type=sendEmail: [sendEmail] [subject] [content] [email(separate by \",\")] [Cc(Optional)] [Bcc(Optional)] ").append(lineSeparator); System.out.println(sb.toString()); } }