1.發(fā)送電子郵件
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的啟東網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
首先應(yīng)該構(gòu)建JavaMail的開發(fā)環(huán)境,在JDK中配置JavaMail的相關(guān)類和包。在構(gòu)建JavaMail開發(fā)環(huán)境中,需要mail.jar和activation.jar這兩個(gè)文件。這兩個(gè)文件的獲得可以通過SUN公司的官方網(wǎng)站下載。
JavaMail對(duì)STMP、POP3、IMAP提供支持,封裝了電子郵件功能中的郵件對(duì)象、發(fā)送、身份驗(yàn)證、接收等功能。
在發(fā)送各種類型的郵件時(shí),主要應(yīng)用到下面幾個(gè)類:
1)Session類。用戶要想發(fā)送郵件首先需要?jiǎng)?chuàng)建Session類的對(duì)象,利用這個(gè)對(duì)象創(chuàng)建郵件對(duì)象、指定郵件服務(wù)器認(rèn)證的客戶端屬性。它的類層次為javax.mail.Session。
2)InternetAddress類。郵件發(fā)送的地址類,類層次結(jié)構(gòu)是javax.mail.internet.InternetAddress,它繼承自抽象類javax.mail.Address。
3)MimeMessage類。郵件消息類,它的類層次結(jié)構(gòu)是javax.mail.internet.MimeMessage,繼承自抽象類javax.mail.Message。
4)Transport類。郵件發(fā)送類,它的類層次結(jié)構(gòu)是javax.mail.Transport。
5)Authenticator類。授權(quán)者類,JavaMail通過使用Authenticator類以用戶名、密碼的方式訪問那些受到保護(hù)的資源,在這里“資源”就是郵件服務(wù)器。其類層次結(jié)構(gòu)為javax.mail.Authenticator。
6)Store類。用來(lái)從郵件服務(wù)器上接受郵件,其類層次結(jié)構(gòu)為javax.mail.Store。
7)Folder類。郵件文件夾類,它的類層次結(jié)構(gòu)為javax.mail.Folder。
實(shí)現(xiàn)過程:
%@ page import="java.io.*"%
%@ page import="java.util.*"%
%@ page import="javax.mail.*"%
%@ page import="javax.mail.internet.*"%
%@ page import="javax.activation.*"%
%
try{
request.setCharacterEncoding("gb2312");
String from = request.getParameter("jname");
String to = request.getParameter("sname");
String subject = request.getParameter("title");
String messageText = request.getParameter("message");
String password = request.getParameter("password");
String S = request.getParameter("jname");
int n = S.indexOf('@');
int m = S.length();
String server = S.substring(n+1,m);
//建立郵件會(huì)話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp."+server);
pro.put("mail.stmp.auth","true");
Session sess = Session.getInstance(pro);
sess.setDebug(true);
MimeMessage message = new MimeMessage(mess);//新建一個(gè)消息對(duì)象
//設(shè)置發(fā)件人
InternetAddress from_mail = new InternetAddress(from);
message.setFrom(from_mail);
//設(shè)置收件人
InternetAddress to_mail = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO,to_mail);
message.setSubject(subject);//設(shè)置主題
message.setText(messageText);//設(shè)置內(nèi)容
message.setSentDate(new Date());//設(shè)置發(fā)送時(shí)間
//發(fā)送郵件
message.saveChanges();//保存郵件信息
Transport transport = sess.getTransport("smtp");
transport.connect("smtp."+server,from,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
out.print("郵件發(fā)送成功");
}catch(Exception e){
out.print("發(fā)送郵件失敗,原因可能是ul");
out.println(e.getMessage());
}
%
2.發(fā)送HTML格式的郵件
MimeMultipart對(duì)象來(lái)存儲(chǔ)HTML文件的具體內(nèi)容,在設(shè)置內(nèi)容的同時(shí)應(yīng)該設(shè)置對(duì)象的格式。
MimeMultipart類的類層次結(jié)構(gòu)是javax.mail.Internet.MimeMultipart。一般保存電子郵件內(nèi)容的容器是Multipart抽象類,它定義了增加、刪除及獲得電子郵件不同內(nèi)容的方法。由于Multipart是抽象類,所以必須使用一個(gè)具體的子類,JavaMail API提供javax.mail.Internet.MimeMultipart類來(lái)使用MimeMessage對(duì)象。
語(yǔ)法:
Multipart mul = new MimeMultipart();
說(shuō)明:使用MimeMultipart對(duì)象時(shí)常用的一個(gè)方法是addBodyPart(),它可以在電子郵件的內(nèi)容里添加BodyPart對(duì)象,消息可以有很多部分,一個(gè)BodyPart可以代表一個(gè)部分。
MimeBodyPart類的類層次結(jié)構(gòu)是javax.mail.Internet.MimeBodyPart。MimeBodyPart是BodyPart具體于MimeMessage的一個(gè)子類。MimeBodyPart對(duì)象代表一個(gè)MimeMessage對(duì)象內(nèi)容的一部分,每個(gè)MimeBodyPart被認(rèn)為由兩部分組成:一個(gè)MIME類型和匹配這個(gè)類型的內(nèi)容。
語(yǔ)法:
BodyPart mdp = new MimeBodyPart();//新建一個(gè)存放信件內(nèi)容的BodyPart對(duì)象
String messageText = "Hello World!";
//定義MIME類型為text/html,并設(shè)置MimeBodyPart的內(nèi)容
mdp.setContent(messageText,"text/html");
實(shí)現(xiàn)過程:
%@ page import="java.io.*"%
%@ page import="java.util.*"%
%@ page import="javax.mail.*"%
%@ page import="javax.mail.internet.*"%
%@ page import="javax.activation.*"%
%
try{
request.setCharacterEncoding("gb2312");
String from_mail = request.getParameter("sname");
String to_mail = request.getParameter("rname");
String subject = request.getParameter("title");
String messageText = request.getParameter("message");
String password = request.getParameter("password");
String S = request.getParameter("sname");
int n = S.indexOf('@');
int m = S.length();
String server = S.substring(n+1,m);
Properties prop = new Properties();
prop.put("mail.smtp.host","smtp."+server);
prop.put("mail.smtp.auth","true");
Session sess = Session.getInstance(prop);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);
//給消息對(duì)象設(shè)置收件人、發(fā)件人、主題、發(fā)信時(shí)間
InternetAddress from = new InternetAddress(from_mail);
message.setFrom(from);
InternetAddress to = new InternetAddress(to_mail);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(subject);
message.setSentDate(new Date());
Multipart mul = new Multipart();//新建一個(gè)MimeMultipart對(duì)象來(lái)存放多個(gè)BodyPart對(duì)象
BodyPart mdp = new MimeBodyPart();//新建一個(gè)存放信件內(nèi)容的BodyPart對(duì)象
mdp.setContent(messageText,"text/html;charset=gb2312");
mul.addBodyPart(mdp);//將含有信件內(nèi)容的BodyPart加入到MimeMultipart對(duì)象中
message.saveChanges();
Transport transport = sess.getTransport("smtp");
transport.connect("smtp."+server,from_mail,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
out.println("郵件發(fā)送成功!");
}catch(Exception e){
out.print("發(fā)送郵件失敗,原因可能是ul");
out.println(e.getMessage());
}
%
3.帶附件的郵件發(fā)送
一般,在設(shè)計(jì)帶有附件的郵件發(fā)送程序時(shí)可以遵循以下步驟:
1)發(fā)送帶有附件的郵件需要建立郵件的各個(gè)郵件體部分,在第一個(gè)部分(即郵件內(nèi)容文字)后增加一個(gè)具有DataHandler的附件。
2)如果將文件作為附件發(fā)送,則要建立FileDataSource類型的對(duì)象作為附件數(shù)據(jù)源;如果從URL讀取數(shù)據(jù)作為附件發(fā)送,則要建立URLDataSource類型的對(duì)象作為附件數(shù)據(jù)源。
3)將數(shù)據(jù)源(FileDataSource或是URLDataSource)對(duì)象作為DataHandler類的構(gòu)造方法的參數(shù)傳入,從而建立一個(gè)DataHandler對(duì)象作為數(shù)據(jù)源的DataHandler。
4)將這個(gè)DataHandler設(shè)置為郵件體部分的DataHandler,這樣就完成了郵件體與附件之間的關(guān)聯(lián)工作。下面的工作就是用BodyPart的setFileName()方法設(shè)置附件名為原文件名。
5)將兩個(gè)郵件體放入到Multipart,設(shè)置郵件內(nèi)容為這個(gè)容器的Multipart,發(fā)送郵件。
實(shí)現(xiàn)過程:
%@ page import="java.io.*"%
%@ page import="java.util.*"%
%@ page import="javax.mail.*"%
%@ page import="javax.mail.internet.*"%
%@ page import="javax.activation.*"%
%@ page import="java.net.*"%
%
try{
request.setCharacterEncoding("gb2312");
String from_mail = request.getParameter("sname");
Stirng to_mail = request.getParameter("rname");
String from_psd = request.getParameter("password");
String title = request.getParameter("title");
String content = request.getParameter("content");
String path = request.getParameter("attachement");
String S = request.getParameter("sname");
int n = S.indexOf('@');
int m = S.length();
String server = S.substring(n+1,m);
Properties prop = new Properties();
prop.put("mail.smtp.host","smtp."+server);
prop.put("mail.smtp.auth","true");
Session sess = Session.getInstance(prop);
session.setDebug(true);
MimeMessage message = new MimeMessage(sess);
//給消息對(duì)象設(shè)置收件人、發(fā)件人、主題
InternetAddress from = new InternetAddress(from_mail);
message.setFrom(from);
InternetAddress to = new InternetAddress(to_mail);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(title);
Multipart mul = new MimeMultipart();//新建一個(gè)MimeMultipart對(duì)象來(lái)存放多個(gè)BodyPart對(duì)象
BodyPart mdp = new MimeBodyPart();//新建一個(gè)存放信件內(nèi)容的BodyPart對(duì)象
mdp.setContent(content,"text/html;charset=gb2312");
mul.addBodyPart(mdp);//將含有信件內(nèi)容的BodyPart加入到MimeMultipart對(duì)象中
//設(shè)置信件的附件
mdp = new MimeBodyPart();//新建一個(gè)存放附件的BodyPart
DataHandler handler = new DataHandler("JAVAMAIL附件測(cè)試","text/plain;charset=gb2312");//新建一個(gè)DataHandler對(duì)象,并設(shè)置其內(nèi)容、格式和編碼方式
mdp.setFileName("mrsoft");//可以和源文件名不一致
mdp.setDataHandler(handler);
mul.addBodyPart(mdp);
message.setContent(mul);//把mul作為消息對(duì)象的內(nèi)容
message.saveChanges();
Transport transport = sess.getTransport("smtp");
transport.connect("smtp."+server,from_mail,from_psd);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
out.println("附件發(fā)送成功!");
}catch(Exception ex){
out.print("郵件發(fā)送失敗,原因可能是:ul");
out.println(ex.getMessage());
}
%
4.郵件群發(fā)
將收件人的地址設(shè)置為tomail+i的形式,利用For循環(huán)向這些地址發(fā)送郵件,以實(shí)現(xiàn)群發(fā)的目的。
利用Address類設(shè)置郵件信息的收件人和發(fā)件人信息,在創(chuàng)建了郵件地址類后,通過message的setFrom()方法設(shè)置郵件的發(fā)件人,代碼如下:
message.setFrom(from_mail);
設(shè)置收件人地址時(shí)使用setRecipient()方法設(shè)置收信人地址,代碼如下:
message.setRecipient(type,address);
參數(shù)type為收件人類型。可以使用以下3個(gè)常量來(lái)區(qū)分收件人的類型:
1)Message.RecipientType.TO--發(fā)送。
2)Message.RecipientType.CC--抄送。
3)Message.RecipientType.BCC--暗送。
說(shuō)明:在日常的使用中,經(jīng)常會(huì)用到抄送和暗送這兩種形式的郵件發(fā)送。抄送和暗送雖然都是將一封E-mail同時(shí)發(fā)送到多個(gè)信箱,但是它們之
間有一定的區(qū)別的,其區(qū)別在于暗送隱藏了其他抄送人的地址,只讓收信人看到自己的收信地址,可以起到保密和預(yù)防垃圾郵件的作用。
實(shí)現(xiàn)過程:
%@ page import="java.io.*"%
%@ page import="java.util.*"%
%@ page import="javax.mail.*"%
%@ page import="javax.mail.internet.*"%
%@ page import="javax.activation.*"%
%
try{
int i = 1;
for(i=1;i4;i++){
request.setCharacterEncoding("gb2312");
String from = request.getParameter("from_mail");
String to = request.getParameter("tomail"+i);
String subject = request.getParameter("subject");
String messageText = request.getParameter("message");
String password = request.getParameter("password");
String S = request.getParameter("from_mail");
int n = S.indexOf('@');
int m = S.length();
String server = S.substring(n+1,m);
//建立郵件會(huì)話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp."+server);
pro.put("mail.smtp.auth","true");
Session sess = Session.getInstance(pro);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);//新建一個(gè)消息對(duì)象
InternetAddress from_mail = new InternetAddress(from);//設(shè)置發(fā)件人
message.setFrom(from_mail);
//設(shè)置收件人
InternetAddress to = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO,to_mail);
message.setSubject(subject);//設(shè)置主題
message.setText(messageText);//設(shè)置內(nèi)容
message.setSentDate(new Date());//設(shè)置發(fā)送時(shí)間
message.saveChanges();//保存郵件信息
Transport transport = sess.getTransport("smtp");
transport.connect("smtp."+server,from,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
if(i==3){
out.print("發(fā)送郵件成功");
}
}
}catch(Exception e){
out.print("發(fā)送郵件失敗,原因可能是ul");
out.println(e.getMessage());
}
%
5.Spring利用WebService發(fā)送手機(jī)短信
通過編程實(shí)現(xiàn)短信息的發(fā)送是一件比較繁瑣的事情,目前一般的解決方法是通過計(jì)算機(jī)和手機(jī)的連線,使用手機(jī)編程語(yǔ)言編寫相關(guān)的短信程序,而這種方法不僅需要耗費(fèi)時(shí)間和精力,還需要有相應(yīng)的硬件設(shè)施,并且必須懂得手機(jī)編程的相關(guān)知識(shí)??梢酝ㄟ^Web Service技術(shù)遠(yuǎn)程訪問現(xiàn)有的短信發(fā)送服務(wù)器,并通過調(diào)用服務(wù)器的方法來(lái)發(fā)送短信。
技術(shù)要點(diǎn):
利用現(xiàn)有資源:一個(gè)可發(fā)送短信的Web Service遠(yuǎn)程服務(wù)。這個(gè)Web Service是新浪網(wǎng)站提供的,它可供用戶直接調(diào)用遠(yuǎn)程服務(wù)來(lái)發(fā)送消息。這個(gè)服務(wù)的服務(wù)名稱是SMSWS,服務(wù)端口是SMSWebServiceSoapPort。在這個(gè)遠(yuǎn)程服務(wù)中提供了一個(gè)發(fā)送短消息的方法sendXml()。此方法的定義如下:
public String sendXml(String carrier,String id,String password,String toMobile,String message,String msgtype)
功能:根據(jù)用戶給定的參數(shù)發(fā)送短信到目標(biāo)用戶的手機(jī)中。
參數(shù)說(shuō)明:
sendXml()方法中的6個(gè)參數(shù)均為String類型,sendXml()方法的返回值也是String類型。以下是sendXml()方法中的6個(gè)參數(shù)的具體說(shuō)明。
1)carrier:運(yùn)營(yíng)商名稱,具體使用時(shí)此參數(shù)并沒有什么具體要求,即這里面可以隨便輸入,輸入的字符串不會(huì)在對(duì)方手機(jī)中有任何顯示。
2)id:在新浪網(wǎng)上注冊(cè)的手機(jī)號(hào)。使用新浪服務(wù)發(fā)送手機(jī)短信時(shí),需要在新浪網(wǎng)站上進(jìn)行手機(jī)注冊(cè),注冊(cè)網(wǎng)址為:。
3)password:在新浪網(wǎng)成功注冊(cè)手機(jī)后,新浪網(wǎng)所反饋來(lái)的密碼。
4)toMobile:對(duì)方接收短信的手機(jī)號(hào)碼。
5)message:所要發(fā)送短消息的內(nèi)容。
6)msgtype:發(fā)送短消息的類型,由于發(fā)送的不是彩信,所以輸入Text。
調(diào)用sendXml()方法需在Spring中配置JaxRpcPortProxyFactoryBean的實(shí)例,然后定義包含此方法的接口,Spring會(huì)自動(dòng)獲得遠(yuǎn)程服務(wù)的接口。
實(shí)現(xiàn)過程:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
SMSWebService sendSms = (SMSWebService)ac.getBean("helloWorldService");
String carrier = "lzwsky";
String id = userid.getText();
String password = passwordField.getText();
String toMobile = toMobileField.getText();
String message = messageField.getText();
String msgtype = "Text";
sendSms.sendXml(carrier,id,password,toMobile,message,msgtype);
Java實(shí)現(xiàn)短信自動(dòng)發(fā)送功能主要是用httpclient實(shí)現(xiàn)的,要有發(fā)短信的端口。
1、硬件設(shè)備是一個(gè)3G網(wǎng)卡;
2、軟件方面需要sun提過的java底層通信common包;
3、此外還需要第三方庫(kù)SMSLib,這個(gè)是開源項(xiàng)目,主要用于實(shí)現(xiàn)java發(fā)短信的功能;
主要代碼如下:
HttpClient?client?=?new?HttpClient();
PostMethod?post?=?new?PostMethod(
"");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=utf-8");//?在頭文件中設(shè)置轉(zhuǎn)碼
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字節(jié)碼文件(.class文件)——由解釋執(zhí)行器(java.exe)將字節(jié)碼文件加載到j(luò)ava虛擬機(jī)(jvm)——字節(jié)碼文件(.class)就會(huì)在java虛擬機(jī)中執(zhí)行。
Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程? ?。
Java具有簡(jiǎn)單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)? 。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等
方法一:
1.web.xml中配置listener
listener
listener-class
cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener
/listener-class
/listener
2.創(chuàng)建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);
//設(shè)置任務(wù)計(jì)劃,啟動(dòng)和間隔時(shí)間
timer.schedule(new MyTask(), 0, 3*60*1000);
//3分鐘
//timer.schedule(new MyTask(), 0, 3*60*1000);
//在1秒后執(zhí)行此任務(wù),每次間隔2秒
//timer.schedule(new MyTask(), 1000, 2000);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
timer.cancel();
}
}
3.創(chuàng)建啟動(dòng)的類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 下實(shí)現(xiàn)定時(shí)工作的調(diào)度框架quartz
· 1。從下載quartz的開源包
quartz-1.7.3.tar.gz
3.07M
· 2。從quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到項(xiàng)目的classpath下
(放到webroot/WEB-INF/lib)下
· 3。定義一個(gè)需要時(shí)間調(diào)度的程序
package com.machome.quartz;
public class CustomJob1 {
public void onTimeWork() {
System.out.println("數(shù)據(jù)備份任務(wù)啟動(dòng)");
System.out.println("...");
System.out.println("數(shù)據(jù)備份任務(wù)完成");
}
}
· 4。剩余的工作就都在spring xml文件里完成了
!-- 被調(diào)度的bean --
bean id="job1" class="com.machome.quartz.CustomJob1"/bean
!-- 定義任務(wù)對(duì)象 --
bean id="jobtask1"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
!-- 被調(diào)度的bean --
property name="targetObject"
ref bean="job1" /
/property
!-- 被調(diào)度的bean中的被調(diào)度的方法 --
property name="targetMethod"
valueonTimeWork/value
/property
/bean
!-- 定義觸發(fā)對(duì)象 --
bean id="trigger1"
class="org.springframework.scheduling.quartz.CronTriggerBean"
!-- 任務(wù)對(duì)象 --
property name="jobDetail"
ref bean="jobtask1" /
/property
!-- cron表達(dá)式 --
property name="cronExpression"
value10,15,20,25,30,35,40,45,50,55 * * * * ?/value
/property
/bean
!-- 調(diào)度對(duì)象 --
!-- 如果將lazy-init='false'那么容器啟動(dòng)就會(huì)執(zhí)行調(diào)度程序 --
bean id="scheduler" lazy-init="false"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
!-- 觸發(fā)對(duì)象 --
property name="triggers"
list
ref bean="trigger1" /
/list
/property
/bean
· 5。 將spring 項(xiàng)目部署到TOMCAT或JBOSS服務(wù)器上
deploy項(xiàng)目
重啟TOMCAT server
· 6。看結(jié)果:
cron表達(dá)式參考:Quartz的cron表達(dá)式
package examples;
import java.util.Scanner;
public class Entry {
public static void main(String args []) {
Scanner sc=new Scanner(System.in);
String pno,msg;
System.out.print("請(qǐng)輸入短信內(nèi)容:");
msg=sc.nextLine();
System.out.println("請(qǐng)輸入目標(biāo)手機(jī)號(hào)碼:");
pno=sc.nextLine();
ShortMesg newmsg=new ShortMesg();
newmsg.setPhoneNO(pno);
newmsg.setMessage(msg);
SendMesg send=new SendMesg(newmsg);
send.send();
}
}
class ShortMesg {
public ShortMesg() {
}
private String pno,msg;
public void setPhoneNO(String pno) {
this.pno=pno;
}
public String getPhoneNO() {
return this.pno;
}
public void setMessage( String msg) {
this.msg=msg;
}
public String getMessage() {
return this.msg;
}
}
class SendMesg {
private ShortMesg mms;
public SendMesg(ShortMesg mms) {
this.mms=mms;
}
public void send() {
System.out.println("短信內(nèi)容: "+mms.getMessage());
System.out.println("目標(biāo)手機(jī): "+mms.getPhoneNO()+"\n");
}
}