第二部分:關于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);
將所有的組件結合在一起
現在所有的組件都已經齊全了?,F在將它們都放在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>
新聞熱點
疑難解答