使用java發送短信和郵件


(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();
        }

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM