JSP中使用JavaMail_JSP編程

來源:互聯網
上載者:User

你希望在jsp中建立一個郵件發送收取工具嗎?下面將介紹的就是在jsp中建立一個郵件發送收取工具。在這篇文章中你可以瞭解到JavaMail API的一些要點以及如何在JSP中使用它。本文中還包括了在JSP中使用JavaMail的執行個體。JavaMail是JSP應用軟體中相當強大的API。 
閱讀這篇文章需要對JSP、JavaBeans和JavaMail有一定的初步瞭解。當然,有關於JavaMail的知識你可以通過閱讀這篇文章來獲得。如果你對於以上三項一無所知,但你所使用的伺服器支援JSP和JavaMail的話,你可以僅僅通過複製/粘貼來使用它們。 
什麼是JavaMail 
JavaMail是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。 
雖然JavaMail是Sun的API之一,但它目前還沒有被加在標準的java開發套件中(Java Development Kit),這就意味著你在使用前必須另外下載JavaMail檔案。除此以外,你還需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的運行很複雜,在這裡簡單的說就是JavaMail的運行必須得依賴於它的支援。在Windows 2000下使用需要指定這些檔案的路徑,在其它的作業系統上也類似。 
接下來要講解的是這篇指南的最難理解的部分。 
這篇指南包括三部分:HTML表格、關於JavaMail、JavaMail和JSP的結合。 
第一部分:HTML表格 
第一部分提供了一個最基本的基於HTML的email發送收取程式的例子。第二部分則講述JavaMail的工作原理。第三部分則介紹將JavaMail加入JSP,建立一個基本的email發送收取程式。
劃分組件 
JSP最重要的特性是能將整個網頁劃分成一些細小的組件。這裡使用的組件包括: 
●一個用來將email的資訊發送給JSP的HTML表格; 
●一個JSP頁面用來處理和發送信件。 
第一步,就是建立一個HTML表格用來給JSP頁面發送資訊。你可以將以下的HTML代碼複製到你的電腦上: 
用來發送email的HTML原始碼 
 <HTML> 
 <BODY> 
 <FORM action="sendmail.jsp" method="post"> 
 <TABLE align="center"> 
 <TR> 
     <TD width="50%"> To:<BR><INPUT name="to" size="25"> </TD> 
    <TD width="50%"> From:<BR><INPUT name="from" size="25"> </TD> 
 </TR> 
 <TR> 
     <TD colspan="2"> Subject:<BR><INPUT name="subject" size="50"></TD> 
 </TR> 
 <TR> 
     <TD colspan="2"> <P>Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA></P></TD> 
 </TR> 
 </TABLE> 
 <INPUT type="submit" name="cb_submit" value=" Send "> 
 <INPUT type="reset" name="cb_reset" value=" Clear "> 
</FORM> 
</BODY> 
</HTML> 
以上這段程式將建立一個包含email基本資料(例如:收件地址、發送地址、主題和內容)的檔案。當然你可以根據你自己的需要來決定這個檔案包含那些資訊。 
這個HTML檔案的使用有兩點要求:第一點是產生的檔案必鬚髮送給接下來將介紹的程式使用。在這個例子中就是sendmail.jsp,但在你使用時,必須用這個檔案在系統裡的URL來代替它;第二點是必須有空間來允許使用者發送email。 
第二部分將對JavaMail的特徵進行一些分析,為在第三部分建立JSP程式作準備。所以接下來我們將學習JavaMail。 
第二部分:關於JavaMail 
文檔的使用 
下載的JavaMail API中帶的文檔是很有用的。你可以在JavaMail下的/docs/javadocs/index.html找到它。第二部分主要將分析郵件程式的組件。你可以通過閱讀文檔來獲得更多這方面的資訊。 
組件發送郵件需要使用JavaMail,它使對郵件的操作變得簡單易用。 
屬性對象 
JavaMail需要建立一個格式為"mail.smtp.host"的檔案用來發送資訊。 
 Properties props = new Properties (); 
 props.put("mail.smtp.host", "smtp.jspinsider.com"); 
對話對象 
所有的基於JavaMail的程式都至少需要一個或全部的對話目標。 
 Session sendMailSession; 
 sendMailSession = Session.getInstance(props, null); 
傳輸 
郵件的傳輸只有送出或受到兩種狀態。JavaMail將這兩種不同狀態原因為傳輸和儲存。傳輸將送出郵件,而儲存將收取郵件。 
 Transport transport; 
 transport = sendMailSession.getTransport("smtp"); 
使用JavaMail能為我們節約大量的時間。JavaMail能代替所有的SMTP的工作。 
注意:JavaMail並不能完全的支援所有的郵件發送收取工作。它目前僅支援IMAP、SMTP和POP3,除此以外你只有等待新的JavaMail版本或自己開發協議。 
資訊對象 
資訊對象將把你所發送的郵件真實的反映出來。 
 Message newMessage = new MimeMessage(sendMailSession); 
這就是我們所需要的全部四個對象。下一步將是如何將對象加入到JSP中。 
第三部分:JavaMail和JSP的結合 
建立JSP 
下面我們將開始將他們結合在一起。最重要的一點是要確認根據頁面指示分類。還要記得在郵件上標註java.util.date。 
 <%@ page 
 import= " javax.mail.*, javax.mail.internet.*, javax.activation.*, java.util.*" 
 %> 
其次,建立郵件發送的確認資訊。確認資訊可以是任意的,一般常用"你的郵件已經發送出去了(Your mail has been sent)。" 
資訊是如何建立和發送的 
我們在第二部分裡已經討論過資訊對象的建立。我們下面將對資訊進行操作。這就和設定資訊對象的屬性一樣簡單。你可以通過下面的程式來實現這項操作。 
 newMessage.setFrom(new InternetAddress(request.getParameter("from"))); 
 newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to"))); 
 newMessage.setSubject(request.getParameter("subject")); 
 newMessage.setSentDate(new Date()); 
 newMessage.setText(request.getParameter("text")); 
現在將開始發送資訊。通過JavaMail來實現它非常簡單。 
 transport.send(newMessage); 
將所有的組件結合在一起 
現在所有的組件都已經齊全了。現在將它們都放在JSP裡面。要注意每一個錯誤資訊,並將它反饋給使用者。代碼如下,你可以通過複製它們直接使用: 
Sample JSP email Utility Using JavaMail 
<%@ page 
 import=" javax.mail.*, javax.mail.internet.*, javax.activation.*,java.util.*" 
 %> 
<html> 
<head> 
<TITLE>JSP meets JavaMail, what a sweet combo.</TITLE> 
</HEAD> 
<BODY> 
<% 
 try{ 
 Properties props = new Properties(); 
 Session sendMailSession; 
 Store store; 
 Transport transport; 
 sendMailSession = Session.getInstance(props, null); 
 props.put("mail.smtp.host", "smtp.jspinsider.com"); 
 Message newMessage = new MimeMessage(sendMailSession); 
 newMessage.setFrom(new InternetAddress(request.getParameter("from"))); 
 newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to"))); 
 newMessage.setSubject(request.getParameter("subject")); 
 newMessage.setSentDate(new Date()); 
 newMessage.setText(request.getParameter("text")); 
 transport = sendMailSession.getTransport("smtp"); 
 transport.send(newMessage); 
 %> 
<P>Your mail has been sent.</P> 
<% 
 } 
 catch(MessagingException m) 
 { 
 out.println(m.toString()); 
 } 
%> 
</BODY> 
</HTML> 
你會很快體會到JavaMail的方便之處,JSP和JavaMail將是未來的希望。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.