溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 實現發短信功能---騰訊云短信

發布時間:2020-09-20 15:12:04 來源:腳本之家 閱讀:255 作者:L_Wayne 欄目:編程語言

前言

如今發短信功能已經成為互聯網公司的標配,本篇文章將一步步實現java發送短信

考察了許多提供短信服務的三方,幾乎所有都需要企業認證才可以使用,這對于個人學習非常不方便。多方比較之后,選擇了騰訊云(此處并非做廣告),原因有兩點:

支持微信公眾號認證(門檻低)每月贈送100條免費短信(適合個人學習)(這一點請礦家子弟自行忽略)

java 實現發短信功能---騰訊云短信

開發環境

請參照: Spring Boot實現模塊化的幾種方法

騰訊云 ---短信

找到短信服務

java 實現發短信功能---騰訊云短信

開通之后,點擊添加應用

java 實現發短信功能---騰訊云短信

設置短信簽名(以公眾號為例),簽名類型選擇公眾號或小程序,其余按照要求填寫即可

java 實現發短信功能---騰訊云短信

簽名完成之后,創建短信模板

java 實現發短信功能---騰訊云短信

等待以上信息審核完成之后,便可以開始使用了,騰訊短信服務需要用到SDK AppID 和App Key ,在這里:

java 實現發短信功能---騰訊云短信

代碼

pom.xml引入依賴

<properties>
 <java.version>1.8</java.version>
 <!-- 你的其他依賴。。。 -->
 <tencent.qcloudsms.version>1.0.6</tencent.qcloudsms.version>
</properties>

<dependencies>
 <!-- 你的其他依賴。。。 -->
 <!-- 騰訊短信 -->
 <dependency>
 <groupId>com.github.qcloudsms</groupId>
 <artifactId>qcloudsms</artifactId>
 <version>${tencent.qcloudsms.version}</version>
 </dependency>
</dependencies>

發送短信工具類

package com.wayne.common.utils;
import com.github.qcloudsms.*;
import com.github.qcloudsms.httpclient.HTTPException;
import com.wayne.common.entity.CmsMessageConfig;
import com.wayne.common.exception.CustomException;
import com.wayne.common.form.MessageForm;
import org.json.JSONException;
import java.io.IOException;
/**
 * 發送短信工具類
 * @author Wayne
 * @date 2019/6/26
 */
public class MessageUtils {
 /**
 * 按模板發送短信 支持單發和群發
 * @param isSingle 是否單發 true: 單發,false: 群發
 * @param form 需要發送的短信內容及收信人手機號
 * @param config 短信配置
 * @throws CustomException 發送失敗時捕獲的異常信息
 */
 public static void sendMessage(Boolean isSingle, MessageForm form, CmsMessageConfig config) throws CustomException {
 validateMessage(form, config);
 String regex = ";";
 String[] params = {form.getCaptcha()};
 String[] phoneNumbers = form.getMobiles().split(regex);
 SmsResultBase result;
 try {
  // 是否單發
  if (isSingle) {
  SmsSingleSender ssender = new SmsSingleSender(config.getAppId(), config.getAppKey());
  result = ssender.sendWithParam("86", phoneNumbers[0], config.getTemplateId(), params, config.getSmsSign(), "", "");
  } else {
  SmsMultiSender msender = new SmsMultiSender(config.getAppId(), config.getAppKey());
  result = msender.sendWithParam("86", phoneNumbers, config.getTemplateId(), params, config.getSmsSign(), "", "");
  }
  System.out.println(result);
 } catch (HTTPException e) {
  e.printStackTrace();
  throw new CustomException("HTTP響應碼錯誤");
 } catch (JSONException e) {
  e.printStackTrace();
  throw new CustomException("json解析錯誤");
 } catch (IOException e) {
  e.printStackTrace();
  throw new CustomException("網絡IO錯誤");
 }
 }
 /**
 * 校驗參數
 */
 private static void validateMessage(MessageForm messageForm, CmsMessageConfig messageConfig) throws CustomException {
 ValidatorUtils.validateEntity(messageForm);
 if (null == messageConfig) {
  throw new CustomException("系統參數異常");
 }
 }
}

CmsMessageConfig配置類

 package com.wayne.common.entity;
 import lombok.Data;
 import javax.persistence.*;
 @Data
 @Table(name = "cms_message_config")
 public class CmsMessageConfig {
 /**
 * 主鍵
 */
 @Id
 @Column(name = "ID")
 private Integer id;
 /**
 * AppID
 */
 @Column(name = "APP_ID")
 private Integer appId;
 /**
 * AppKey
 */
 @Column(name = "APP_KEY")
 private String appKey;
 /**
 * 短信模板ID
 */
 @Column(name = "TEMPLATE_ID")
 private Integer templateId;
 /**
 * 簽名內容
 */
 @Column(name = "SMS_SIGN")
 private String smsSign;
 /**
 * 是否刪除,0:否,1:是
 */
 @Column(name = "IS_DELETE")
 private String isDelete;
 /**
 * 狀態,0:使用,1:未使用 (同一時間應最多只有一條數據處于使用狀態)
 */
 @Column(name = "IS_USE")
 private String isUse;
 /**
 * 創建者ID
 */
 @Column(name = "CREATE_ADMIN_ID")
 private Integer createAdminId;
 @Column(name = "EXTEND1")
 private String extend1;
 @Column(name = "EXTEND2")
 private String extend2;
 @Column(name = "EXTEND3")
 private String extend3;
 @Column(name = "EXTEND4")
 private String extend4;
 @Column(name = "EXTEND5")
 private String extend5;
 @Column(name = "EXTEND6")
 private String extend6;
 }

Service

@Override
 public ResponseBean sendMessage(MessageForm messageForm) {
 ValidatorUtils.validateEntity(messageForm);
 // 獲取正在使用的短信配置: 此處為 從數據庫中查詢
 CmsMessageConfig messageConfig = getCurrUseMessageConfig();
 try {
  // 發送短信
  MessageUtils.sendMessage(Boolean.FALSE, messageForm, messageConfig);
 } catch (CustomException e) {
  e.printStackTrace();
  return ResponseBean.createInstance(Boolean.FALSE, 401, e.getMessage());
 }
 return ResponseBean.createInstance();
 }

Controller

 @PostMapping("/message/sendMessage")
 public ResponseBean sendMessage(MessageForm messageForm) {
 return messageService.sendMessage(messageForm);
 }

效果

一號短信模板java 實現發短信功能---騰訊云短信

二號短信模板

java 實現發短信功能---騰訊云短信

設置短信配置信息

java 實現發短信功能---騰訊云短信

總結

以上所述是小編給大家介紹的java 實現發短信功能---騰訊云短信,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女