程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP與Java Mail API

JSP與Java Mail API

編輯:關於JSP

綜述:Java Mail API的開發是SUN為Java開發者提供公用API框架的持續努力的良好例證。提倡公用框架,反對受限於供應商的解決方案,充分預示著一個日益開放的開發環境的建立。
  Java Mail API的結構本身證明了它的開發者的基本目標之一--軟件開發的工作量應該取決於應用程序本身的復雜程度以及開發者所要求的控制程度。換句話說,Java Mail API盡可能地保持簡單。乍看起來,Java Mail API所擁有的類總數以及類之間的關系可能讓人誤解為要花費漫長的學習時間。實際上,一旦正式開始使用,你就會發現該API不失為在應用程序中加入健壯的郵件/通訊支持的簡單工具。

  建立JavaMail使用環境,需要哪些軟件

  首先,需要安裝JavaMail API。現在有兩種常用的 JavaMail API 版本:1.2 和 1.1.3。雖然版本 1.2 是最新版,但版本 1.1.3 包含了Java 2 平台企業版(Java 2 Platform, Enterprise Edition,J2EE)的版本 1.2.1,所以仍然有很多人使用它。
  ·JavaMail 1.2 的安裝
  要使用 JavaMail 1.2 API,請下載 JavaMail 1.2 實現,解開Javamail-1_2.zip 文件,並將 mail.jar 文件添加到 CLASSPATH 中。除了核心類,隨版本 1.2 實現一起提供的還有 SMTP、IMAP4 和 POP3 供應商。
  · JavaMail 1.1.3 的安裝
  要使用 JavaMail 1.1.3 API,請下載 JavaMail 1.1.3 實現,解開Javamail1_1_3.zip文件,並將 mail.jar 文件添加到您的 CLASSPATH 中。除了核心類,隨版本 1.1.3 實現一起提供的還有 SMTP 和 IMAP4 供應商。
  如果您用 JavaMail 1.1.3 訪問一個 POP 服務器,請下載並安裝一個 POP3 供應商。Sun 就有一個獨立於 JavaMail 實現。下載並解開 pop31_1_1.zip 文件後,將 pop3.jar 也添加到您的 CLASSPATH 中。
  其次是JavaBeans Activation Framework 的安裝。JavaMail API 的所有版本都需要 JavaBeans Activation Framework 來支持任意數據塊的輸入及相應處理。功能似乎不多,但目前許多浏覽器和郵件工具中都能找到這種基本的 MIME 型支持。下載完框架後,解開 jaf1_0_1.zip 文件,並將 activation.jar 文件添加到 CLASSPATH 中。
  對於 JavaMail 1.2 用戶來說,現在您應該已將 mail.jar 和 activation.jar 文件添加到 CLASSPATH 中了。
  而對於 JavaMail 1.1.3 用戶,現在您應該已將 mail.jar、pop3.jar和 activation.jar文件添加到 CLASSPATH 中了。如果不打算用 POP3,就不必將 pop3.jar 添加到 CLASSPATH 中去。
  如果您不想更改 CLASSPATH 環境變量,將 jar 文件復制到您 Java 運行時環境(Java Runtime Environment,JRE)目錄下的 lib/ext 目錄中去。例如,J2SE 1.3 發行版的缺省目錄在 Windows 平台的 C:jdk1.3jrelibext。

  Java Mail API有哪些核心類

  ·Javax.mail.Session:Session 類定義了一個基本郵件會話(session),是Java Mail API最高層入口類。所有其它類都是經由這個session 才得以生效。Session 對象用 Java.util.Properties 對象獲取信息,如郵件服務器、用戶名、密碼及整個應用程序中共享的其它信息。
  ·Javax.mail.Message:一旦獲得 Session 對象,就可以繼續創建要發送的消息。這由 Message 類來完成。因為 Message 是個抽象類,必需用一個子類,多數情況下為 Javax.mail.internet.MimeMessage。MimeMessage 是個能理解 MIME 類型和頭的電子郵件消息,正如不同 RFC 中所定義的。雖然在某些頭部域非 ASCII 字符也能被譯碼,但 Message 頭只能被限制為用 US-ASCII 字符。
  ·Javax.mail.Address:一旦您創建了 Session 和 Message,並將內容填入消息後,就可以用 Address 確定信件地址了。和 Message 一樣,Address 也是個抽象類。您用的是 Javax.mail.internet.InternetAddress 類。
  ·Javax.mail. Authenticator:與 Java.net 類一樣,JavaMail API 也可以利用 Authenticator 通過用戶名和密碼訪問受保護的資源。對於JavaMail API 來說,這些資源就是郵件服務器。JavaMail Authenticator 在 Javax.mail 包中,而且它和 Java.net 中同名的類 Authenticator 不同。兩者並不共享同一個 Authenticator,因為JavaMail API 用於 Java 1.1,它沒有 Java.net 類別。
要使用 Authenticator,先創建一個抽象類的子類,並從 getPasswordAuthentication() 方法中返回 PasswordAuthentication 實例。創建完成後,您必需向 session 注冊 Authenticator。然後,在需要認證的時候,就會通知 Authenticator。您可以彈出窗口,也可以從配置文件中(雖然沒有加密是不安全的)讀取用戶名和密碼,將它們作為 PasswordAuthentication 對象返回給調用程序。
  ·Javax.mail.Transport:消息發送的最後一部分是使用 Transport 類。這個類用協議指定的語言發送消息(通常是 SMTP)。它是抽象類,它的工作方式與 Session 有些類似。僅調用靜態 send() 方法,就能使用類的 缺省 版本:Transport.send(message);或者,讀者也可以從針對自己的協議的會話中獲得一個特定的實例,傳遞用戶名和密碼(如果不必要就不傳),發送消息,然後關閉連接。
  ·Javax.mail.Store:Store類實現特定郵件協議上的讀、寫、監視、查找等操作。通過Javax.mail.Store類可以訪問Javax.mail.Folder類。
  ·Javax.mail.Folder:Folder類用於分級組織郵件,並提供照Javax.mail.Message格式訪問email的能力。

  怎樣使用JavaScript/" target="_blank">JSP發送email?

  下面我們通過一個簡單的例子,來說明在JavaScript/" target="_blank">JSP中郵件是如何發送的。該例由兩個文件組成。一個是HTML文件,用來建立郵件信息(包括發送人、接收人、主題等)的表單,並將表單內容發送給JavaScript/" target="_blank">JSP文件;另外一個是JavaScript/" target="_blank">JSP頁面,負責郵件的發送。

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>
  JavaScript/" target="_blank">JSP頁面的作用就是獲得表單提交過來的數據,並將這些數據賦給Java Mail API中相應的對象,最後完成郵件發送。

sendmail.jsp文件
<%@ page import=" Javax.mail.*, Javax.mail.internet.*, Javax.activation.*,Java.util.*"%>
<html>
<head>
<TITLE>JavaScript/" target="_blank">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>
  如何發送HTML類型的郵件

  在上面的例子中,我們實現了如何發送文本格式的郵件,那麼HTML格式的郵件該如何發送呢?那就看看下面的例子吧。
  該例由四個文件組成:
  ·form.htm:用來建立郵件信息的表單
  ·send.jsp:用來獲取表單提交的信息,並調用mymail.mail.HTML.send()方法發送郵件
  ·StringDataSource.Java:用戶自定義的JavaBean,用來將郵件的Body部分轉化為HTML格式
  ·HTML.Java:用戶自定義的JavaBean,用來發送HTML格式的郵件。在send.jsp文件中提到的mymail.mail.HTML.send()方法就在該JavaBean中定義。

form.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> JavaMail - 發送HTML郵件</title>
</head>
<body>
<table border="0" cell

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved