本文目錄一覽:
如何用JAVA實現發送手機短信
1.通過移動或聯通短信網關發送短信,這需要通信服務商給你開通短信端口,發送短信協議各個服務商都不一樣,比如移動的是cmpp2,cmpp3等
2.第二種是通過硬件設備發送短信,這個需要你有專門的硬件設備,比如一個上網卡或者一個手機模塊,通過調用com遵從一些協議發送短信
單純靠寫代碼是無法發短信的,至少要有一個WEBSERVICE接口或者硬件接口。
java怎麼發送短信
import java.net.URLEncoder;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.io.*;
class http_post
{
public String send_sms(String user_id, String password, String mobile_phone,
String msg, String send_date, String subcode) {
String ret_str = “”;
try {
// Construct data
String data = “user_id=” + user_id + “password=” + password +
“mobile_phone=” + mobile_phone +
“msg=” + URLEncoder.encode(msg, “GBK”) + “send_date=” + send_date +
“subcode=” + subcode;
// Send data
URL url = new URL(“”);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.
getInputStream()));
String line;
while ( (line = rd.readLine()) != null) {
ret_str += line;
}
wr.close();
rd.close();
}
catch (Exception e) {
System.out.println(e.toString());
}
return ret_str;
}
public static void main(String[] args) throws IOException
{
http_post http= new http_post();
String ret=http.send_sms(“4003″,”xxxxxxx”,”13900000000″,”fromjava中國萬歲”,””,”4003″);
System.out.println(ret);
}
}
java怎麼實現群發短信的功能
JAVA實現短信群發的步驟:
1、使用第三方短信平台服務商,接入短信服務;
2、調用短信提交頁面發送請求;
3、服務器向第三方短信平台提交發送請求;
4、短信平台通過運營商將短信下發至用戶的手機上。
以下是秒賽短信平台JAVA短信驗證碼接口代碼示例
package test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang3.StringUtils;
public class Apis {
// 短信發送接口的http地址,請諮詢客服
private static String url = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
// 編碼格式。發送編碼格式統一用UTF-8
private static String ENCODING = “UTF-8”;
public static void main(String[] args) throws IOException, URISyntaxException {
// 賬號
String account = “************************”;
// 密碼
String pswd = “************************”;
// 修改為您要發送的手機號,多個用,分割
String mobile = “13*********”;
// 設置您要發送的內容
String msg = “【秒賽科技】您的驗證碼是:1234”;
// 發短信調用示例
System.out.println(Apis.send(account,pswd, mobile, msg));
}
/**
* 發送短信
*
* @param account
* account
* @param pswd
* pswd
* @param mobile
* 手機號碼
* @param content
* 短信發送內容
*/
public static String send(String account,String pswd, String mobile, String msg) {
NameValuePair[] data = { new NameValuePair(“account”, account),
new NameValuePair(“pswd”, pswd),
new NameValuePair(“mobile”, mobile),
new NameValuePair(“msg”, msg),
new NameValuePair(“needstatus”, “true”),
new NameValuePair(“product”, “”) };
return doPost(url, data);
}
/**
* 基於HttpClient的post函數
* PH
* @param url
* 提交的URL
*
* @param data
* 提交NameValuePair參數
* @return 提交響應
*/
private static String doPost(String url, NameValuePair[] data) {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
// method.setRequestHeader(“ContentType”,
// “application/x-www-form-urlencoded;charset=UTF-8”);
method.setRequestBody(data);
// client.getParams()。setContentCharset(“UTF-8”);
client.getParams()。setConnectionManagerTimeout(10000);
try {
client.executeMethod(method);
return method.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
java發送手機短信
package com.winhands.quartz;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.winhands.base.service.BaseService;
import com.winhands.util.BaseConstant;
import com.winhands.web.dict.entity.DictCommon;
import com.winhands.web.xfhf.entity.SmsOutBox;
import com.winhands.web.xfhf.entity.SmsVisit;
import com.winhands.web.xfhf.entity.TaskInfo;
public class SmsSendSync {
public BaseService baseService;
public BaseService baseServiceMas;
public static final Logger logger = LoggerFactory.getLogger(SmsSendSync.class);
//同步短信到mas機待發短信表
public void work() {
// 任務ID 100001
// 首先查詢任務是否正在執行
// 查詢列表
TaskInfo taskInfo = new TaskInfo();
taskInfo.setTask_id(“100001”);
try {
taskInfo = (TaskInfo) baseService.queryForObject(“sms_send.queryTaskStatus”, taskInfo);
//如果狀態是處室狀態則執行,否則此次任務不執行
if (BaseConstant.task_status_cs.equals(taskInfo.getTask_status())) {
taskInfo.setTask_status(BaseConstant.task_status_zx);//設置任務執行狀態為執行
taskInfo.setTask_last_start_time(new Date());//設置任務執行開始時間
baseService.update(“sms_send.updateTaskStatus”, taskInfo);//
//移動號碼庫
HashMapString,String hashMap = new HashMapString,String();
//134 、135、136、137、138、139、150、151、152、158、159、182、183、184。157、187、188
hashMap.put(“134”, “134”);
hashMap.put(“135”, “135”);
hashMap.put(“136”, “136”);
hashMap.put(“137”, “137”);
hashMap.put(“138”, “138”);
hashMap.put(“139”, “139”);
hashMap.put(“150”, “150”);
hashMap.put(“151”, “151”);
hashMap.put(“152”, “152”);
hashMap.put(“157”, “157”);
hashMap.put(“158”, “158”);
hashMap.put(“159”, “159”);
hashMap.put(“182”, “182”);
hashMap.put(“183”, “183”);
hashMap.put(“184”, “184”);
hashMap.put(“187”, “187”);
hashMap.put(“188”, “188”);
SmsVisit smsSend = new SmsVisit();
smsSend.setSms_status(BaseConstant.sms_status_csh);
List list = baseService.queryForList(“sms_send.queryForSmsTask”, smsSend);
List smsMasList = new ArrayList();
List smsList = new ArrayList();
if (list == null||list.size()==0) return;// 如果列表為空,沒有待辦任務,則任務結束
for (int i = 0; i list.size(); i++) {
smsSend = (SmsVisit) list.get(i);
//String msg = messagecontent(smsSend);
String msg = smsSend.getSpare_2();
if(hashMap.get(smsSend.getVisit_phone().substring(0, 3))!=null){
SmsOutBox smsOutBox = new SmsOutBox();
smsOutBox.setSismsid(smsSend.getP_id());
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr(smsSend.getVisit_phone());
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new Date());
smsOutBox.setExtcode(smsSend.getExtccode());
smsOutBox.setSendmethod(BaseConstant.NoMsg);// 正常短信
smsOutBox.setMessagecontent(msg);
smsMasList.add(smsOutBox);
}else{
boolean con = true;
String lastMsg = msg;
int xh =0;
while(con){
lastMsg = msg.substring(0,msg.length() 55 ? 55 : msg.length());
msg = msg.substring(msg.length() 55 ? 55 : msg.length(),msg.length());
if (msg.equals(“”)) {
con = false;
}
SmsOutBox smsOutBox = new SmsOutBox();
smsOutBox.setSismsid(smsSend.getP_id()+(xh==0?””:xh));
xh++;
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr(smsSend.getVisit_phone());
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new Date());
smsOutBox.setExtcode(smsSend.getExtccode());
smsOutBox.setSendmethod(BaseConstant.NoMsg);// 正常短信
smsOutBox.setMessagecontent(lastMsg);
smsMasList.add(smsOutBox);
}
}
SmsVisit smsSendTemp = new SmsVisit();
smsSendTemp.setP_id(smsSend.getP_id());
//smsSendTemp.setSpare_2(msg);//短信內容
smsSendTemp.setSms_status_time(new Date());
smsSendTemp.setSms_status(BaseConstant.sms_status_yfswg);
smsList.add(smsSendTemp);
}
baseService.insertBatch(“sms_send.insertSmsOutBox”, smsMasList);//插入本地歷史記錄表
baseServiceMas.insertBatch(“sms_mas.insertSmsOutBox”, smsMasList);//插入mas機待發送表
baseService.updateBatch(“sms_send.updateSmsVisit”, smsList);//更新回訪記錄狀態
}
} catch (Exception e) {
e.printStackTrace();
//baseService.saveLog(“同步短信到mas機待發短信表”, “100001”, “同步短信到mas機待發短信表錯誤”);
logger.error(“同步短信到mas機待發短信表錯誤”, getTrace(e));
}finally{
try {
taskInfo.setTask_status(BaseConstant.task_status_cs);//設置任務執行狀態為初始
taskInfo.setTask_last_end_time(new Date());//設置任務執行結束時間
taskInfo.setTask_status_desc(“任務執行結束”);
baseService.update(“sms_send.updateTaskStatus”, taskInfo);//
} catch (Exception e2) {
e2.printStackTrace();
// TODO: handle exception
}
}
}
public String messagecontent(SmsVisit smsSend){
//XX,您好!您於XX月XX日辦理XX業務(或XX,您好!XX大隊於XX月XX日對你單位進行監督檢查/行政處罰/火災調查),現進行滿意度回訪,請回複數字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!回復免費。宿遷市公安消防支隊
//首先根據業務類型來判斷採用哪種模板 監察
StringBuffer msg = new StringBuffer(“”);
if(BaseConstant.jiancha.equals(smsSend.getVisit_deal_business_type())){
msg.append(smsSend.getVisit_name_cn())
.append(“,您好!”)
.append(smsSend.getVisit_deal_org_name())
.append(“於”)
.append(smsSend.getVisit_deal_time().substring(4, 6)).append(“月”)
.append(smsSend.getVisit_deal_time().substring(6, 8)).append(“日”)
.append(“對你單位進行”).append(DictCommon.getEntryMap(BaseConstant.jiancha).get(smsSend.getVisit_deal_business()))
.append(“,現進行滿意度回訪,請回複數字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!”);
}else if(BaseConstant.yewu.equals(smsSend.getVisit_deal_business_type())){
msg.append(smsSend.getVisit_name_cn())
.append(“,您好!您於”)
.append(smsSend.getVisit_deal_time().substring(4, 6)).append(“月”)
.append(smsSend.getVisit_deal_time().substring(6, 8)).append(“日”)
.append(“辦理”).append(smsSend.getVisit_deal_business()).append(“業務,”)
.append(“現進行滿意度回訪,請回複數字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!”);
}
return msg.toString();
}
public BaseService getBaseService() {
return baseService;
}
public void setBaseService(BaseService baseService) {
this.baseService = baseService;
}
public BaseService getBaseServiceMas() {
return baseServiceMas;
}
public void setBaseServiceMas(BaseService baseServiceMas) {
this.baseServiceMas = baseServiceMas;
}
public static void main(String[] args){
List smsMasList = new ArrayList();
try {
String msg = “***,您好!*********於2015年5月2日對你單位進行監督檢查,現進行滿意度回訪,請回複數字:1為滿意;2為基本滿意;3為不滿意。感謝您對消防工作的支持!”;
SmsOutBox smsOutBox = new SmsOutBox();
smsOutBox.setSismsid(“12344”);
smsOutBox.setReqdeliveryreport(BaseConstant.NoReport);
smsOutBox.setApplicationid(BaseConstant.APPLICATIONID);
smsOutBox.setDestaddr(“111”);
smsOutBox.setMsgfmt(BaseConstant.MSGFMT);
smsOutBox.setRequesttime(new Date());
smsOutBox.setExtcode(“2222”);
smsOutBox.setSendmethod(BaseConstant.NoMsg);// 正常短信
boolean con = true;
String lastMsg = msg;
while(con){
lastMsg = msg.substring(0,msg.length() 55 ? 55 : msg.length());
msg = msg.substring(msg.length() 55 ? 55 : msg.length(),msg.length());
if (msg.equals(“”)) {
con = false;
}
SmsOutBox smOutBox_temp = new SmsOutBox();
smOutBox_temp = smsOutBox;
smOutBox_temp.setMessagecontent(lastMsg);
smsMasList.add(smOutBox_temp);
}
for(Object o:smsMasList){
SmsOutBox smsOutBox2 = (SmsOutBox)o;
System.out.println(smsOutBox2.getMessagecontent());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getTrace(Throwable t) {
StringWriter stringWriter= new StringWriter();
PrintWriter writer= new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer= stringWriter.getBuffer();
return buffer.toString();
}
}
短信不是你想發 想發就能發,是收費的,我們公司是租用的移動MAS平台的短信發送接收平台,上面那是和一個和mas同步的一個小程序,租用別人的mas平台是收費的,平台有很多自己選擇,有發送接口可以調,發送內容自己提供
原創文章,作者:PYPN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/132354.html