2010年11月15日 星期一

JSP 教學 - JavaMail 電子郵件處理

我們可以透過 JavaMail API 來進行電子郵件的處理,首先必須先去下載 JavaMail 套件

可以到 http://www.oracle.com/technetwork/java/javamail-1-4-2-141075.html

下載最新的 JavaMail 1.4.2 API ,可以選擇下載壓縮檔,下載完成並解壓縮後

我們需要的是 mail.jar 即可,如果需要處理附加檔案的話則還要另外下載

JavaBeans Activation FrameworkJAF來配合 JavaMail
接下來介紹一下 JavaMail 的用途,在寫 JSP 的登入的時候如果使用者忘記密碼


那就是用到 JavaMail 的時候了,我以 NetBeans 為例實現寄送電子郵件的功能


首先將剛剛下載的 mail.jar 匯入到 project 中,在側邊欄的 Liberaries 點擊右鍵 > Add Library

接下來可以在一個 Servlet 中進行郵件處理,在這之前可能需要先讓使用者

輸入帳號確認身分後可以再加上密碼的提示,如果答案正確即可寄信

以下為 Servlet 中部份的程式碼,當確認身分並提示答案正確後會呼叫 sendMail()
//......
private boolean sendMail(String email, String password)  //email 為收件者, password 為密碼
{   
    java.util.Properties property = new java.util.Properties();
    property.put("mail.host", "ms2.hinet.net");  //設定郵件伺服器
    property.put("mail.transport.protocol", "smtp");     //設定通訊協定
    Session sess = Session.getInstance(property, null);    //取得 Session
    MimeMessage msg = new MimeMessage(sess);   //以Session 為參數 建立一封電子郵件  
    try{
        msg.setFrom(new InternetAddress("xxxxxx@yahoo.com.tw"));  //寄件者
        //將收件者的 InetAddress 物件新增給使用者
 msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email));  
        msg.setSubject("找回密碼");   //郵件的主旨
        msg.setText(password);    //郵件的內容...使用者的密碼
        msg.setSentDate(new java.util.Date());   //設定寄送日期  為現在
        Transport.send(msg);   //寄送郵件
        return true;
    }catch(AddressException ae){
        System.out.println(ae);
        return false;   //記得要 return false
    }catch(MessagingException me){
        System.out.println(me);
        return false;   //記得要 return false
    }
}

沒有留言:

張貼留言