發送短信java,發送短信失敗是什麼情況

本文目錄一覽:

如何用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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PYPN的頭像PYPN
上一篇 2024-10-03 23:51
下一篇 2024-10-03 23:51

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論