引言
你有沒有想過使用JSP建立一個自己的簡單的郵件發布系統?如果你想的話
這篇文章就能完成你的夢想
本文是一篇入門級的教程
將介紹如何用寫一個用來收集電子郵件信息的HTML頁面
然後介紹JavaMail郵件應用程序接口的一些重要特點
最後使用JSP來整合成一個郵件發布系統
一旦你掌握了使用JavaMail的方法
它就能成為JSP應用程序的一個強大的應用程序接口
本文要求你了解JSP
JavaBeans和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=
sendmail
jsp
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實用程序中
即sendmail
jsp
你也可以用你系統中的相應的程序來代替它
第二
修改表單
包含你希望用戶發送的郵件中必需的字段
JavaMail的基礎知識
使用JavaMail是發送電子郵件所需要的組件
JavaMail的機構使處理電子郵件非常容易
下面列出了一些我們需要的類
.Properties
JavaMail需要Properties來創建一個session對象
它將尋找字符串
mail
smtp
host
屬性值就是發送郵件的主機
如
Properties props = new Properties ();
props
put(
mail
smtp
host
);//可以換上你的smtp主機名
.Session
這個Session類代表JavaMail 中的一個郵件session
每一個基於 JavaMail的應用程序至少有一個session但是可以有任意多的session
在這個例子中
Session對象需要知道用來處理郵件的SMTP 服務器
為了做到這一點
你可以參照下面的例子用Properties 來創建一個Session 對象
Session sendMailSession;
sendMailSession = Session
getInstance(props
null);
.Transport
郵件是既可以被發送也可以被受到
JavaMail使用了兩個不同的類來完成這兩個功能
Transport 和 Store
Transport 是用來發送信息的
而Store用來收信
對於這的教程我們只需要用到Transport對象
Store的用法請參看Sun的JavaMail文檔
用法
Transport transport;
transport = sendMailSession
getTransport(
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外
不要忘了導入java
util
date
因為我們需要它來給郵件蓋上時間戳
<%
@ page import=
javax
mail
*
javax
mail
internet
*
javax
activation
*
java
util
*
%>
下一步
創建郵件發送出去的確認信息
如
你的郵件已發送
請返回
二
創建並發送Message對象
創建Message 對象的方法我們在第三課中就以討論過了
我們可以用Message來處理消息了
就像在Message對象上使用get和set屬性一樣簡單
在這一部分使用了很多request
getParameter()
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
send(newMessage);
三
完整的程序
上面的都是一些零零碎碎的代碼
現在我們把它們寫成一個完整的JSP程序
注意要捕捉任何錯誤並把它們顯示給用戶
源程序二
JavaMail 電子郵件發送系統的JSP實現程序代碼
<%@ page
import=
javax
mail
*
javax
mail
internet
*
javax
activation
*
java
util
*
%>
<html>
<head>
<TITLE>JavaMail 電子郵件發送系統</TITLE>
</HEAD>
<BODY>
<%
try{
Properties props = new Properties();
Session sendMailSession;
Store store;
Transport transport;
sendMailSession = Session
getInstance(props
null);
props
put(
mail
smtp
host
);
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
ge
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19444.html