熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

用JavaMail寫簡易電子郵件發送系統

2013-11-15 11:41:34  來源: JSP教程 

  引言
  
    你有沒有想過使用JSP建立一個自己的簡單的郵件發布系統?如果你想的話這篇文章就能完成你的夢想本文是一篇入門級的教程將介紹如何用寫一個用來收集電子郵件信息的HTML頁面 然後介紹JavaMail郵件應用程序接口的一些重要特點最後使用JSP來整合成一個郵件發布系統一旦你掌握了使用JavaMail的方法它就能成為JSP應用程序的一個強大的應用程序接口
  
    本文要求你了解JSPJavaBeans和JavaMail的一些基本知識我想你現在一定想把他們在溫習一下那就請看天極網上的關於JSP和JavaBean的相關教程當然了你也可以去看Sun的官方網站上的相關介紹JavaMail我會在下文中介紹
  
    如果你對這方面的知識還不是非常了解的話但是你的服務器上又可以支持JSP和JavaMail的話那就把本文中介紹的例子復制到你的服務器的相關目錄下吧
  
    JavaMail是什麼?
  
    JavaMail是Sun發布的處理電子郵件的應用程序接口它預置了一些最常用的郵件傳送協議的實現方法並且提供了很容易的方法去調用它們JavaMail是Sun發布的應用程序接口所以目前它還沒有被JDK包含 因此你需要從Sun的官方網站上下載到JavaMail類文件包除此之外還需要Sun的JAF(JavaBeans Activation Framework )否則JavaMail將不能運行
  
    是不是還沒有編一丁點東西就覺得累了一身汗呀?不要著急這是教程中最難的部分剩下的內容都是很簡單的了如果你確信每個東西都裝好後我們就可以開始了
  
    HTML郵件表格
  
    JSP最大的特色之一就是能把項目分類或劃分成許多組件從而提高了組件的重利用率也降低了編程的難度因此我們在編程的時候也要想著如何把大的問題劃分成一個個模塊
  
    模塊一 一個HTML表單能把電子郵件信息傳送給JSP程序
  
    模塊二 一個處理和發送郵件的JSP頁面
  
  本文中將提供一個HTML表單來向JSP頁面發送信息復制下面的HTML源代碼到你的主機上
  
    代碼一發送電子郵件的HTML源代碼
  
    <html>
  
    <BODY>
  
    <FORM action=sendmailjsp method=post
  
     <TABLE align=center
  
      <TR>
  
       <TD width=%
  
        收件人:<BR><INPUT name=to size=
  
       </TD>
  
       <TD width=%
  
        寄信人:<BR><INPUT name=from size=
  
       </TD>
  
      </TR>
  
      <TR>
  
       <TD colspan=
  
        主題:<BR><INPUT name=subject size=
  
       </TD>
  
      </TR>
  
      <TR>
  
       <TD colspan=
  
        <p>郵件正文:<BR><TEXTAREA name=text rows= cols=></TEXTAREA></p>
  
       </TD>
  
      </TR>
  
      </TABLE>
  
      <INPUT type=submit name=cb_submit value=發送
  
      <INPUT type=reset name=cb_reset value=重寫
  
     </FORM>
  
    </BODY>
  
    </HTML>
  
  這個示例只包括電子郵件中最重要的信息像收信人 寄信人主題郵件正文而自己的郵件系統的最大的優點就是可以增加你所需要獲得的信息抄送完全根據你的需要
  
    這個HTML文檔有兩個主要的需要根據你的要求修改的量第一表單的動作(action)必須用post發送到下面一課中要介紹的JSP實用程序中即sendmailjsp你也可以用你系統中的相應的程序來代替它第二 修改表單包含你希望用戶發送的郵件中必需的字段
  
    JavaMail的基礎知識
  
    使用JavaMail是發送電子郵件所需要的組件
  
    JavaMail的機構使處理電子郵件非常容易下面列出了一些我們需要的類
  
    .Properties
  
    JavaMail需要Properties來創建一個session對象它將尋找字符串mailsmtphost屬性值就是發送郵件的主機
  
     Properties props = new Properties ();
  
     propsput(mailsmtphost );//可以換上你的smtp主機名
  
    .Session
  
    這個Session類代表JavaMail 中的一個郵件session 每一個基於 JavaMail的應用程序至少有一個session但是可以有任意多的session 在這個例子中 Session對象需要知道用來處理郵件的SMTP 服務器為了做到這一點你可以參照下面的例子用Properties 來創建一個Session 對象
  
    Session sendMailSession;
  
    sendMailSession = SessiongetInstance(props null);
  
    .Transport
  
    郵件是既可以被發送也可以被受到JavaMail使用了兩個不同的類來完成這兩個功能Transport 和 Store Transport 是用來發送信息的而Store用來收信對於這的教程我們只需要用到Transport對象Store的用法請參看Sun的JavaMail文檔
  
    用法Transport transport;
  
     transport = sendMailSessiongetTransport(smtp);
  
    用JavaMail Session對象的getTransport 方法來初始化Transport傳過去的字符串申明了對象所要使用的協議smtp這將為我們省了很多時間因為JavaMail以境內置了很多協議的實現方法
  
    注意: JavaMail並不是絕對支持每一個協議目前支持IMAP SMTP和 POP
  
    .Message
  
    Message對象將存儲我們實際發送的電子郵件信息Message對象被作為一個MimeMessage對象來創建並且需要知道應當選擇哪一個JavaMail session
  
    使用方法是Message newMessage = new MimeMessage(sendMailSession);
  
    JavaMail結合JSP
  
    一構建JSP程序
  
    前面我們建造了一個HTML表單用來發送郵件信息又介紹了JavaMail中的一些對象和方法現在我們將把這些組件集合起來來構成我們的郵件系統
  
    第一步也是最重要的一步確信在page指令中導入了需要的類除了JavaMail的相關的類和JAF外不要忘了導入javautildate 因為我們需要它來給郵件蓋上時間戳
  
    <%
  
     @ page import= javaxmail* javaxmailinternet* javaxactivation* javautil*
  
    %>
  
  下一步創建郵件發送出去的確認信息你的郵件已發送請返回
  
    二創建並發送Message對象
  
    創建Message 對象的方法我們在第三課中就以討論過了我們可以用Message來處理消息了就像在Message對象上使用get和set屬性一樣簡單在這一部分使用了很多requestgetParameter()
  
    newMessagesetFrom(new InternetAddress(requestgetParameter(from)));
  
    newMessagesetRecipient(MessageRecipientTypeTO new InternetAddress(requestgetParameter(to)));
  
    newMessagesetSubject(requestgetParameter(subject));
  
    newMessagesetSentDate(new Date());
  
    newMessagesetText(requestgetParameter(text));
  
    現在終於可以把消息發送出去了
  
    transportsend(newMessage);
  
    三完整的程序
  
    上面的都是一些零零碎碎的代碼現在我們把它們寫成一個完整的JSP程序注意要捕捉任何錯誤並把它們顯示給用戶
  
    源程序二JavaMail 電子郵件發送系統的JSP實現程序代碼
  
    <%@ page
  
     import= javaxmail* javaxmailinternet* javaxactivation*javautil*
  
    %>
  
    <html>
  
    <head>
  
     <TITLE>JavaMail 電子郵件發送系統</TITLE>
  
    </HEAD>
  
    <BODY>
  
    <%
  
     try{
  
      Properties props = new Properties();
  
      Session sendMailSession;
  
      Store store;
  
      Transport transport;
  
      sendMailSession = SessiongetInstance(props null);
  
      propsput(mailsmtphost );
  
      Message newMessage = new MimeMessage(sendMailSession);
  
      newMessagesetFrom(new InternetAddress(requestgetParameter(from)));
  
      newMessagesetRecipient(MessageRecipientTypeTO new InternetAddress(requestgetParameter(to)));
  
      newMessagesetSubject(requestge
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19444.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.