您的位置:

发送短信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平台是收费的,平台有很多自己选择,有发送接口可以调,发送内容自己提供