第三部分:在JSP中使用JavaMail
構造JSP 現在,將介紹如何把這些對象放到一起,需要用頁面指示語把這些對象導入,這點是很關鍵的。注意:也要用到java.util.date,因為email的時戳要用到java.util.date。
<%@ page import= " javax.mail.*, javax.mail.internet.*, =>javax.activation.*, java.util.*" %> 下一步要創建一個特定的信息,表示郵件已經被發送。你可以自己設定該信息,通常是:“Your mail has been sent。”
如何創建和發送消息
創建Message對象的代碼在第二部分已經出現了。現在我們可以處理該消息。很簡單,只要在對象中使用get和 set properties方法即可。使用post過來的信息作為參數,例如request.getParameter()就是個很有用的方法,可以獲取post發送來的參數。參見Listing B。 Listing B:
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腳本中。注意,要加入捕捉錯誤并顯示給用戶的腳本語句。JSP腳本請見Listing C。要使用該腳本,只要把腳本拷貝到你的電腦中即可。 Listing C:
<%@ 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>
這就行了!如果你打算了解JavaMail所做的一步步的動作,就使用'sendMailSession.setDebug(true);'。
現在你已經對JSP 和JavaMail的使用有所入門。如果想了解更多信息,請參見Sun's JavaMail links。
如何做得更好?
最重要的是這個工具能夠運行。但我們可以改進它。后續教程將介紹:
為什么不把表單放在JSP中? 客戶端的驗證 如何使用beans來代替那些雜亂的不能重用的代碼。 通過JSP,把功能和設計分開。
|