java发送手机短信

Python018

java发送手机短信,第1张

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)//

//移动号码库

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

首先APP后台就得有这样的轮询程序,比如每次打开app时触发,比如每隔10分钟触发,每次触发就调用下服务器端的服务,服务端去拉取要推送的信息,或者知道对方的手机号或微信号,那就直接调用短信接口或直接发送微信信息了。

极光推送服务是一款免费的第三方推送消息的平台。极光推送从整体来说还不错,具有以下优势:

1、开放注册,免费向所有的开发者开放使用。

2、极光推送 - JPush SDK

JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。

3、开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。

4、7*24小时专人专线服务:专属安全团队支持,24 小时随时响应,免除后顾之忧。

极光是一个不错的选择,深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。

同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。

1.通过移动或联通短信网关发送短信,这需要通信服务商给你开通短信端口,发送短信协议各个服务商都不一样,比如移动的是cmpp2,cmpp3等

2.第二种是通过硬件设备发送短信,这个需要你有专门的硬件设备,比如一个上网卡或者一个手机模块,通过调用com遵从一些协议发送短信

单纯靠写代码是无法发短信的,至少要有一个WEBSERVICE接口或者硬件接口。