# JSP發送郵件
雖然使用JSP實現郵件發送功能很簡單,但是需要有JavaMail API,并且需要安裝JavaBean Activation Framework。
* 您可以從 Java 網站下載最新版本的[JavaMail](http://www.oracle.com/technetwork/java/javamail/index.html),打開網頁右側有個**Downloads**鏈接,點擊它下載。
* 您可以從 Java 網站下載最新版本的[JAF(版本 1.1.1)](http://www.oracle.com/technetwork/articles/java/index-135046.html)。
你也可以使用本站提供的下載鏈接:
* [JavaMail mail.jar 1.4.5](http://static.runoob.com/download/mail.jar)
* [JAF(版本 1.1.1) activation.jar](http://static.runoob.com/download/activation.jar)
下載并解壓這些文件,在根目錄下,您將會看到一系列jar包。將mail.jar包和activation.jar包加入CLASSPATH變量中。
## 發送一封簡單的郵件
這個例子展示了如何從您的機器發送一封簡單的郵件。它假定localhost已經連接至網絡并且有能力發送一封郵件。與此同時,請再一次確認mail.jar包和activation.jar包已經添加進CLASSPATH變量中。
~~~
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// 收件人的電子郵件
String to = "abcd@gmail.com";
// 發件人的電子郵件
String from = "mcmohd@gmail.com";
// 假設你是從本地主機發送電子郵件
String host = "localhost";
// 獲取系統屬性對象
Properties properties = System.getProperties();
// 設置郵件服務器
properties.setProperty("mail.smtp.host", host);
// 獲取默認的Session對象。
Session mailSession = Session.getDefaultInstance(properties);
try{
// 創建一個默認的MimeMessage對象。
MimeMessage message = new MimeMessage(mailSession);
// 設置 From: 頭部的header字段
message.setFrom(new InternetAddress(from));
// 設置 To: 頭部的header字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// 設置 Subject: header字段
message.setSubject("This is the Subject Line!");
// 現在設置的實際消息
message.setText("This is actual message");
// 發送消息
Transport.send(message);
result = "Sent message successfully....";
}catch (MessagingException mex) {
mex.printStackTrace();
result = "Error: unable to send message....";
}
%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align="center">
<%
out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>
~~~
現在訪問http://localhost:8080/SendEmail.jsp,它將會發送一封郵件給abcd@gmail.com 并顯示如下結果:
~~~
Send Email using JSP
Result: Sent message successfully....
~~~
如果想要把郵件發送給多人,下面列出的方法可以用來指明多個郵箱地址:
~~~
void addRecipients(Message.RecipientType type,
Address[] addresses)
throws MessagingException
~~~
參數的描述如下:
* type:這個值將會被設置成 TO(收件人)、CC 或 BCC。CC 表示 Carbon Copy(抄送),BCC 表示 Blind Carbon Copy(密件抄送)。例子程序中使用的是 TO。
* addresses:這是一個郵箱地址的數組,當指定郵箱地址時需要使用InternetAddress()方法。
* * *
## 發送一封HTML郵件
這個例子發送一封簡單的HTML郵件。它假定您的localhost已經連接至網絡并且有能力發送郵件。與此同時,請再一次確認mail.jar包和activation.jar包已經添加進CLASSPATH變量中。
這個例子和前一個例子非常相似,不過在這個例子中我們使用了setContent()方法,將"text/html"做為第二個參數傳給它,用來表明消息中包含了HTML內容。
~~~
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// 收件人的電子郵件
String to = "abcd@gmail.com";
// 發件人的電子郵件
String from = "mcmohd@gmail.com";
// 假設你是從本地主機發送電子郵件
String host = "localhost";
// 獲取系統屬性對象
Properties properties = System.getProperties();
// 設置郵件服務器
properties.setProperty("mail.smtp.host", host);
// 獲取默認的Session對象。
Session mailSession = Session.getDefaultInstance(properties);
try{
// 創建一個默認的MimeMessage對象。
MimeMessage message = new MimeMessage(mailSession);
// 設置 From: 頭部的header字段
message.setFrom(new InternetAddress(from));
// 設置 To: 頭部的header字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// 設置 Subject: header字段
message.setSubject("This is the Subject Line!");
// 設置 HTML消息
message.setContent("<h1>This is actual message</h1>",
"text/html" );
// 發送消息
Transport.send(message);
result = "Sent message successfully....";
}catch (MessagingException mex) {
mex.printStackTrace();
result = "Error: unable to send message....";
}
%>
<html>
<head>
<title>Send HTML Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align="center">
<%
out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>
~~~
現在你可以嘗試使用以上JSP文件來發送HTML消息的電子郵件。
* * *
## 在郵件中包含附件
這個例子告訴我們如何發送一封包含附件的郵件。
~~~
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// 收件人的電子郵件
String to = "abcd@gmail.com";
// 發件人的電子郵件
String from = "mcmohd@gmail.com";
// 假設你是從本地主機發送電子郵件
String host = "localhost";
// 獲取系統屬性對象
Properties properties = System.getProperties();
// 設置郵件服務器
properties.setProperty("mail.smtp.host", host);
// 獲取默認的Session對象。
Session mailSession = Session.getDefaultInstance(properties);
try{
// 創建一個默認的MimeMessage對象。
MimeMessage message = new MimeMessage(mailSession);
// 設置 From: 頭部的header字段
message.setFrom(new InternetAddress(from));
// 設置 To: 頭部的header字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// 設置 Subject: header字段
message.setSubject("This is the Subject Line!");
// 創建消息部分
BodyPart messageBodyPart = new MimeBodyPart();
// 填充消息
messageBodyPart.setText("This is message body");
// 創建多媒體消息
Multipart multipart = new MimeMultipart();
// 設置文本消息部分
multipart.addBodyPart(messageBodyPart);
// 附件部分
messageBodyPart = new MimeBodyPart();
String filename = "file.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// 發送完整消息
message.setContent(multipart );
// 發送消息
Transport.send(message);
String title = "Send Email";
result = "Sent message successfully....";
}catch (MessagingException mex) {
mex.printStackTrace();
result = "Error: unable to send message....";
}
%>
<html>
<head>
<title>Send Attachement Email using JSP</title>
</head>
<body>
<center>
<h1>Send Attachement Email using JSP</h1>
</center>
<p align="center">
<%
out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>
~~~
* * *
## 用戶認證部分
如果郵件服務器需要用戶名和密碼來進行用戶認證的話,可以像下面這樣來設置:
~~~
properties.setProperty("mail.user", "myuser");
properties.setProperty("mail.password", "mypwd");
~~~
* * *
## 使用表單發送郵件
使用HTML表單接收一封郵件,并通過request對象獲取所有郵件信息:
~~~
String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");
~~~
獲取以上信息后,您就可以使用前面提到的例子來發送郵件了。
- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器