发送短信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/n/132354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PYPNPYPN
上一篇 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

发表回复

登录后才能评论