(1)發送短信
1.1在中國網建SMS上注冊一個用戶名,並獲取短信密鑰(非登錄密碼)
1.2代碼
import java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class SendMessage {
/**
* @param args
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws HttpException, IOException {
HttpClient client=new HttpClient();
PostMethod post=new PostMethod("http://gbk.sms.webchinese.cn");
//在頭文件中設置轉碼
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");
NameValuePair[] data={
new NameValuePair("Uid","網建注冊用戶名"),
new NameValuePair("Key","短信密鑰"),
new NameValuePair("smsMob","接收號碼"),
new NameValuePair("smsText","短信內容")
};
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers=post.getRequestHeaders();
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("gbk"));
System.out.println(result);
post.releaseConnection();
}
1.3注意需要引入包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar
1.4StatusCode說明:
| 短信發送后返回值 | 說 明 |
|---|---|
| -1 | 沒有該用戶賬戶 |
| -2 | 接口密鑰不正確 [查看密鑰] 不是賬戶登陸密碼 |
| -21 | MD5接口密鑰加密不正確 |
| -3 | 短信數量不足 |
| -11 | 該用戶被禁用 |
| -14 | 短信內容出現非法字符 |
| -4 | 手機號格式不正確 |
| -41 | 手機號碼為空 |
| -42 | 短信內容為空 |
| -51 | 短信簽名格式不正確 接口簽名格式為:【簽名內容】 |
| -6 | IP限制 |
| 大於0 | 短信發送數量 |
2、發郵件
2.1smtp驗證類
import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class SmtpAuthenticator extends Authenticator { String username=null; String password=null; public SmtpAuthenticator(String name,String password) { super(); this.username=name; this.password=password; } public PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(this.username, this.password); } }
2.2發郵件的工具類
import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class JavaMailSendUtil { public void sendMail(String subject,String from,String[] to, String test,String[] filenames,String mineType){ try { Properties props=new Properties(); String smtp="smtp.163.com";//設置發送郵件所用到的smtp String servername="18862839372@163.com"; String serverpassword="************"; Session mailSession=null; MimeMessage mimeMsg=null; props=java.lang.System.getProperties(); props.put("mail.smtp.host", smtp);//設置SMTP主機 props.put("mail.smtp.auth", "true");//是否到服務器用戶名和密碼驗證 //到服務器驗證發送的用戶名和密碼是否正確 SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword); //設置郵件會話 注意這里講認證信息放進了Session的創建參數里 mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther); //設置傳輸協議 javax.mail.Transport transport=mailSession.getTransport("smtp"); //設置from、to等信息 mimeMsg=new javax.mail.internet.MimeMessage(mailSession); if(from!=null&&!from.equals("")){ InternetAddress sendFrom=new InternetAddress(from); mimeMsg.setFrom(sendFrom);//設置發送人地址 } InternetAddress[] sendTo=new InternetAddress[to.length]; for(int i=0;i<to.length;i++){ System.out.println("發送到:"+to[i]); sendTo[i]=new InternetAddress(to[i]); } mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312"); MimeBodyPart messageBodyPart1=new MimeBodyPart(); messageBodyPart1.setContent(test,mineType); //附件傳輸格式 Multipart multipart=new MimeMultipart(); multipart.addBodyPart(messageBodyPart1); for(int i=0;i<filenames.length;i++){ MimeBodyPart messageBodyPart2=new MimeBodyPart(); String filename=filenames[i].split(";")[0]; System.out.println(filename); String displatname=filenames[i].split(";")[1]; //得到數據源 FileDataSource fds=new FileDataSource(filename); //BodyPart添加附件本身 messageBodyPart2.setDataHandler(new DataHandler(fds)); //BodyPart添加附件文件名 messageBodyPart2.setFileName(MimeUtility.encodeText(displatname)); multipart.addBodyPart(messageBodyPart2); } mimeMsg.setContent(multipart); //設置信件頭的發送日期 mimeMsg.setSentDate(new Date()); mimeMsg.saveChanges(); //發送郵件 Transport.send(mimeMsg); transport.close(); System.out.println("消息發送成功"); } catch (Exception e) { // TODO: handle exception } } }
2.3測試類
public class TestMailSend { /** * @param args */ public static void main(String[] args) { String title="測試郵件"; String from="18862839372@163.com"; String sendTo[]={"1245226995@qq.com","jlsong186@126.com"}; String content="just test java send mail!!!!<br><a href=\"http://sjskt.javaeye.com\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"}; JavaMailSendUtil test=new JavaMailSendUtil(); try { test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312"); } catch (Exception e) { e.printStackTrace(); } } }
