項目中用到短信驗證功能,看到騰訊雲有短信服務,就直接使用了,當然其它公司也會停工短信服務,百度可以找到很多,使用的情況應該大同小異,這里就以騰訊雲的短信服務為例,說明一下短信服務的申請和使用。
1 短信服務申請
登錄騰訊雲之后,在雲產品里面選擇移動和通信,短信。
在彈出的界面,點擊添加應用。
在彈出的窗口,填寫應用名稱和應用簡介
填寫完成之后,平台會為我們的應用創建一條應用,點擊項目名稱“短信測試項目”。
進入之后,里面有兩個非常重要的參數appid和appkey,這兩個參數會在程序中用到。
有了以上兩個參數,就可以發短信了,下面就是要配置短信的內容模板,點擊上面的國內短信。
然后依次點擊短信內容配置—短信簽名—創建簽名,之后會彈出一個創建短信簽名的窗口,需要填寫相關信息。
其中紅色方框的簽名內容,就是短信內容中一開始的簽名。這部分填寫之后需要騰訊審核,如果材料沒問題,審核會很快通過,如果沒有通過,就看他們給的失敗信息。比如我用的是個人賬號,簽名類型就需要選擇他用,除了需要公司的營業執照,還需要公司的授權書,他們給提供格式,需要公司蓋章。完成之后點擊確認,會在短信簽名下方生成一條短信簽名信息。
短信簽名通過之后,需要編輯典型正文,點擊上方的短信正文。
點擊創建正文模板,然后會彈出正文模板的窗口。
此處,模板名稱和申請說明可正常填寫,重點看一下短信內容的填寫,有一個模板示例,按照示例填寫。確認。為了避免不合法信息,騰訊也是要審核的,這個審核速度也很快。
在短信正文下方也會生成一條信息。
注意這個地方,紅色方框處有一個ID,這也是一個很重要的參數,程序中也會用到,在程序中為templateID,也就是模板ID。
2 程序代碼
使用java編寫代碼,參考地址為https://cloud.tencent.com/document/product/382/13613,程序可分為兩部分,一個是maven引入,一個是main函數測試。
Maven部分
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.6</version>
</dependency>
代碼部分
package com.example.demo.util;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
import java.io.IOException;
public class QCloudSMS {
public static void main(String[] args) {
// 短信應用SDK AppID
int appid = 1400xxxx; // 1400開頭
// 短信應用SDK AppKey
String appkey = "26xxxxf3";
// 需要發送短信的手機號碼
String[] phoneNumbers = {"13512345678"};
// 短信模板ID,需要在短信應用中申請
int templateId = 3xxxx9; // NOTE: 真實的模板ID需要在短信控制台中申請
//templateId7839對應的內容是"您的驗證碼是: {1}"
try {
String[] params = {"5678"};//數組具體的元素個數和模板中變量個數必須一致,例如事例中templateId:5678對應一個變量,參數數組中元素個數也必須是一個
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
templateId, params, "", "", ""); // 簽名參數未提供或者為空時,會使用默認簽名發送短信
System.out.println(result);
} catch (HTTPException e) {
// HTTP響應碼錯誤
e.printStackTrace();
} catch (JSONException e) {
// json解析錯誤
e.printStackTrace();
} catch (IOException e) {
// 網絡IO錯誤
e.printStackTrace();
}
}
}
運行程序之后,會在手機上收到一條短信。
3 結語
短信服務申請比較簡單,使用也不復雜。在一開始使用的時候還是有一些坑,比如templateID這個參數,是短信正文的ID,不是短信簽名的ID,這個在調試的時候也走了彎路。
短信發送程序,在實際使用的時候,發送模塊放到util包中,隨機碼也需要寫程序生成。