java代码给qq发短信 java调用发送消息

java 如何发送短信

这段代码本身只是利用java访问了一个url:(",后面带了一堆的参数:String data = "user_id=" + user_id + "password=" + password +

我们提供的服务有:网站设计制作、网站设计、微信公众号开发、网站优化、网站认证、松原ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的松原网站制作公司

"mobile_phone=" + mobile_phone +

"msg=" + URLEncoder.encode(msg, "GBK") + "send_date=" + send_date +

"subcode=" + subcode;

,仅此而已,至于具体要怎么发,那就要看这个URL提供放的后台是如何定义参数的含义了。

如何用Java实现短信自动发送功能

方法一:

1.web.xml中配置listener

listener

listener-class

cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener

/listener-class

/listener

2.创建listener

import java.util.Timer;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

private Timer timer = null;

@Override

public void contextInitialized(ServletContextEvent sce) {

timer = new Timer(true);

//设置任务计划,启动和间隔时间

timer.schedule(new MyTask(), 0, 3*60*1000);

//3分钟

//timer.schedule(new MyTask(), 0, 3*60*1000);

//在1秒后执行此任务,每次间隔2秒

//timer.schedule(new MyTask(), 1000, 2000);

}

@Override

public void contextDestroyed(ServletContextEvent sce) {

timer.cancel();

}

}

3.创建启动的类MyTask

import java.util.Date;

import java.util.TimerTask;

public class MyTask extends TimerTask {

@Override

public void run() {

System.out.println("call at " + (new Date()));

}

}

方法二:

spring 下实现定时工作的调度框架quartz

· 1。从下载quartz的开源包

quartz-1.7.3.tar.gz

3.07M

· 2。从quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到项目的classpath下

(放到webroot/WEB-INF/lib)下

· 3。定义一个需要时间调度的程序

package com.machome.quartz;

public class CustomJob1 {

public void onTimeWork() {

System.out.println("数据备份任务启动");

System.out.println("...");

System.out.println("数据备份任务完成");

}

}

· 4。剩余的工作就都在spring xml文件里完成了

!-- 被调度的bean --

bean id="job1" class="com.machome.quartz.CustomJob1"/bean

!-- 定义任务对象 --

bean id="jobtask1"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"

!-- 被调度的bean --

property name="targetObject"

ref bean="job1" /

/property

!-- 被调度的bean中的被调度的方法 --

property name="targetMethod"

valueonTimeWork/value

/property

/bean

!-- 定义触发对象 --

bean id="trigger1"

class="org.springframework.scheduling.quartz.CronTriggerBean"

!-- 任务对象 --

property name="jobDetail"

ref bean="jobtask1" /

/property

!-- cron表达式 --

property name="cronExpression"

value10,15,20,25,30,35,40,45,50,55 * * * * ?/value

/property

/bean

!-- 调度对象 --

!-- 如果将lazy-init='false'那么容器启动就会执行调度程序 --

bean id="scheduler" lazy-init="false"

class="org.springframework.scheduling.quartz.SchedulerFactoryBean"

!-- 触发对象 --

property name="triggers"

list

ref bean="trigger1" /

/list

/property

/bean

· 5。 将spring 项目部署到TOMCAT或JBOSS服务器上

deploy项目

重启TOMCAT server

· 6。看结果:

cron表达式参考:Quartz的cron表达式

如何使用Java发送qq邮件

方法:

1.前提准备工作:

首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务

2.开启方法:

登陆qq邮箱

3.点击 设置

4.点击—-账户

5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启

6.送短信 —–点击确定

7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到

8.点击保存修改 —OK 完成

9.java 测试代码:

package cn.cupcat.test;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

public class SendmailUtil {

public static void main(String[] args) throws AddressException, MessagingException {

Properties properties = new Properties();

properties.put("mail.transport.protocol", "smtp");// 连接协议

properties.put("mail.smtp.host", "smtp.qq.com");// 主机名

properties.put("mail.smtp.port", 465);// 端口号

properties.put("mail.smtp.auth", "true");

properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用

properties.put("mail.debug", "true");//设置是否显示debug信息 true 会在控制台显示相关信息

//得到回话对象

Session session = Session.getInstance(properties);

// 获取邮件对象

Message message = new MimeMessage(session);

//设置发件人邮箱地址

message.setFrom(new InternetAddress("123456789@qq.com"));

//设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("987654321@qq.com") });

//设置邮件标题

message.setSubject("这是第一封Java邮件");

//设置邮件内容

message.setText("内容为: 这是第一封java发送来的邮件。");

//得到邮差对象

Transport transport = session.getTransport();

//连接自己的邮箱账户

transport.connect("123456789@qq.com", "vvctybgbvvophjcj");//密码为刚才得到的授权码

//发送邮件 transport.sendMessage(message, message.getAllRecipients());

}

}

10.运行就会发出邮件了。。。。

下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!

注意事项

得到的授权码一定要保存好,程序中要使用

java怎么同步发送及异步发送短信例子解析

发送短信的接口

根据自己的情况选择服务商。

开发文档

从开发文档中我们可以看到. 可以直接使用http请求也可以使用WebService请求发送短信. 由于DEMO文件夹下的java和jsp文件夹中的代码都是使用http请求发送短信. 所以这里就不再细说了, 我们使用WebService的方式演示发送短信.

生成客户端代码

从接口文档中我们知道它的WebService的WSDL的url为: 那么我们可以执行下面的命令生成客户端代码:

wsimport -keep

其中wsimport是JDK自带的工具, -keep url选项是"保留生成的文件". 该命令会在当前目录下生成sms.cn.ihuyi._106包, 以及众多的类. 接下来开始编写我们自己的代码.

定义接口

为了方便, 这里我们首先定义一个接口:

Sms.java

public interface Sms {

/**

* 向mobile发送短信, 内容为message

* @param mobile 手机号

* @param message 短信内容

* @return 成功返回-1, 否则返回其他值

*/

int sendMessage(String mobile, String message);

}

这个接口很简单, 只有一个方法. 这个方法用来发送短信.

同步发送短信

接下来我们首先实现一个同步发送短信的类:

IhuyiSmsImpl.java

public class IhuyiSmsImpl implements Sms {

private String account;

private String password;

public void setAccount(String account) {

this.account = account;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public int sendMessage(String mobile, String message) {

cn.ihuyi._106.Sms factory = new cn.ihuyi._106.Sms();

SmsSoap smsSoap = factory.getSmsSoap();

SubmitResult submit = smsSoap.submit(account, password, mobile, message);

int code = submit.getCode();

if(code == 2){

return -1;

}

System.out.println("发送短信失败, code:" + code);

return code;

}

}

异步发送短信

由于发送短信涉及到网络通信, 因此sendMessage方法可能会有一些延迟. 为了改善用户体验, 我们可以使用异步发送短信的方法. 原理很简单: 如果用户请求发送短信, 我们不是直接调用IhuyiSmsImpl的sendMessage方法, 而是将请求保存起来(生产者), 然后告诉用户: 短信发送成功. 之后有若干个消费者取出任务, 调用sendMessage方法发送短信.

这里, 我使用线程池完成上面的任务:

AsyncSmsImpl.java

public class AsyncSmsImpl implements Sms {

public Sms sendSms;

private ExecutorService executorService = Executors.newFixedThreadPool(3);

public void setSendSms(Sms sendSms) {

this.sendSms = sendSms;

}

@Override

public int sendMessage(String mobile, String message) {

try {

executorService.submit(() - sendSms.sendMessage(mobile, message));

}

catch(Exception e) {

Sysemt.out.println("提交任务时发生错误" + e);

return 0;

}

return -1;

}

public void destroy(){

try{

executorService.shutdown();

}

catch(Exception e){}

}

}

在第17行, 我们获得远程对象的一个代理对象. 之后就可以通过这个代理对象进行发送短信, 查询账户余额等操作.

第18行, 使用该代理对象的submit方法提交了短信内容. 该方法的参数信息及返回值含义在接口文档中有详细的说明.

第19行我们获得了结果的状态码. 根据文档上的说明, 状态码为2说明提交成功. 简单起见, 这里我们只关注提交成功的情况. 需要注意的是, 状态码为2只是说明提交成功. 根据官网上的"3-5秒内响应、100%到达", 我们可以推测. 如果提交成功, 那么基本上3-5秒内,短信就会发送成功, 根据用户的网络情况, 可能稍有延迟用户就可以收到短信.

使用这段代码发送短信也很简单, 直接new一个对象, 设置好账号和密码就可以发送短信了.

代码很简单, 直接将Sms接口的sendMessage(mobile, message)方法作为一个任务加到线程池的任务队列中. 这样等到有空闲线程时, 就会执行sendSms.sendMessage(mobile, message)发送短信. 这里我们假设只要保存到线程池就可以成功发送短信. 因为发送失败的情况实际上很罕见.

如何用Java实现短信自动发送功能?

Java实现短信自动发送功能主要是用httpclient实现的,要有发短信的端口。

1、硬件设备是一个3G网卡;

2、软件方面需要sun提过的java底层通信common包;

3、此外还需要第三方库SMSLib,这个是开源项目,主要用于实现java发短信的功能;

主要代码如下:

HttpClient client = new HttpClient();

PostMethod post = new PostMethod(

"");

post.addRequestHeader("Content-Type",

"application/x-www-form-urlencoded;charset=utf-8");// 在头文件中设置转码

NameValuePair[] data = { new NameValuePair("sname", "*****"),

new NameValuePair("spwd", "*****"),

new NameValuePair("scorpid", "*****"),

new NameValuePair("sprdid", "*****"),

new NameValuePair("sdst", "*****"),

new NameValuePair("smsg", "*****") };

post.setRequestBody(data);

client.executeMethod(post);

Header[] headers = post.getResponseHeaders();

int statusCode = post.getStatusCode();

System.out.println("statusCode:" + statusCode);

for (Header h : headers) {

System.out.println(h.toString());

}

String result = new String(post.getResponseBodyAsString().getBytes("utf-8"));

System.out.println(result);

post.releaseConnection();

Java源程序(.java文件)——java字节码文件(.class文件)——由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——字节码文件(.class)就会在java虚拟机中执行。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程   。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等


网站标题:java代码给qq发短信 java调用发送消息
文章转载:http://scyanting.com/article/dooshdc.html