Gửi Email trong Servlet Để gửi một Email bởi sử dụng một Servlet là khá đơn giản.. Gửi một Email đơn giản trong Servlet Ví dụ sau minh họa cách gửi một Email đơn giản từ thiết bị của bạ
Trang 1Gửi Email trong Servlet
Để gửi một Email bởi sử dụng một Servlet là khá đơn giản Nhưng trước hết bạn cần cài
đặtJavaMail API và Java Activation Framework (JAF) trên thiết bị
• Bạn có thể tải phiên bản mới nhất của JavaMail (Version 1.2) từ Website chuẩn của
Java
• Bạn có thể tải phiên bản mới nhất của JAF (Version 1.1.1) từ Website chuẩn của
Java
Tải và unzip các file này, trong các thư mục cấp độ cao nhất Bạn cần thêm các file
làmail.jar và activation.java vào trong CLASSPATH của bạn
Gửi một Email đơn giản trong Servlet
Ví dụ sau minh họa cách gửi một Email đơn giản từ thiết bị của bạn Tại đây giả sử
rằnglocalhost của bạn đã kết nối internet và có khả năng để gửi một Email Ngoài ra, đảm
bảo rằng, tất cả các jar file từ Java Email API package và JAF package là có sẵn trong
CLASSPATH
// File Name SendEmail.java import java.io.*; import java.util.*; import
javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import
javax.mail.internet.*; import javax.activation.*; public class SendEmail
extends HttpServlet{ public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{ // Recipient's email ID needs to be mentioned String to =
"abcd@gmail.com"; // Sender's email ID needs to be mentioned
String from "web@gmail.com"; // Assuming you are sending email from
localhost String host = "localhost"; // Get system properties
Properties properties = System.getProperties(); // Setup mail server
properties.setProperty("mail.smtp.host", host); // Get the default
Session object Session session = Session.getDefaultInstance(properties);
// Set response content type
response.setContentType("text/html"); PrintWriter out
response.getWriter(); try{ // Create a default MimeMessage
object MimeMessage message = new MimeMessage(session); //
Set From: header field of the header message.setFrom(new
InternetAddress(from)); // Set To: header field of the header
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to)); // Set Subject: header field
message.setSubject("This is the Subject Line!"); // Now set the actual
message message.setText("This is actual message"); // Send
message Transport.send(message); String title = "Send Email";
String res = "Sent message successfully "; String docType =
Trang 2"<!doctype html public \"-//w3c//dtd html 4.0 "
"transitional//en\">\n"; out.println(docType + "<html>\n"
"<head><title>" title + "</title></head>\n" "<body
bgcolor=\"#f0f0f0\">\n" "<h1 align=\"center\">" title + "</h1>\n"
+ "<p align=\"center\">" res + "</p>\n"
"</body></html>"); }catch MessagingException mex) {
mex.printStackTrace(); } } }
Biên dịch Servlet trên và tạo các entry sau trong web.xml:
<servlet> <servlet-name>SendEmail</servlet-name> <servlet
-class>SendEmail</servlet-class> </servlet> <servlet-mapping> <servlet
-name>SendEmail</servlet-name> <url-pattern>/SendEmail</url-pattern>
</servlet-mapping>
Bây giờ gọi Servlet trên bởi sử dụng URL là http://localhost:8080/SendEmail sẽ gửi một
Email với Email ID đã cho là abcd@gmail.com và sẽ hiển thị phản hồi sau:
Send Email
Sent message successfully
Nếu bạn muốn gửi một Email tới nhiều người nhận, thì phương thức sau sẽ được sử dụng
để xác định nhiều Email ID
void addRecipients(Message.RecipientType type, Address[]
addresses) throws MessagingException
Miêu tả các tham số:
• type: Nó sẽ được thiết lập là TO, CC hoặc BCC Với CC biểu diễn Carbon Copy và
BCC biểu diễn Black Carbon Copy Ví dụ: Message.RecipientType.TO
• addresses: Đây là mảng các Email ID Bạn sẽ cần sử dụng phương
thứcInternetAddress() trong khi xác định các Email ID đó
Gửi một HTML Email trong Servlet
Sau đây là một ví dụ minh họa cách gửi một HTML Email từ thiết bị của bạn bởi sử dụng
Servlet Tại đây giả sử rằng localhost của bạn đã kết nối internet và có khả năng để gửi
Trang 3một Email Ngoài ra, đảm bảo rằng, tất cả các jar file từ Java Email API package và JAF
package là có sẵn trong CLASSPATH
Ví dụ này tương tự như ví dụ trước đó, ngoại trừ, chúng ta sử dụng phương thức
setContent() để thiết lập nội dung của tham số thứ hai là “text/html” để xác định rằng HTML
content đó được bao trong thông báo
Sử dụng ví dụ này, bạn có thể gửi một HTML email lớn bao nhiêu tùy thích
// File Name SendEmail.java import java.io.*; import java.util.*; import
javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import
javax.mail.internet.*; import javax.activation.*; public class SendEmail
extends HttpServlet{ public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{ // Recipient's email ID needs to be mentioned String to =
"abcd@gmail.com"; // Sender's email ID needs to be mentioned
String from "web@gmail.com"; // Assuming you are sending email from
localhost String host = "localhost"; // Get system properties
Properties properties = System.getProperties(); // Setup mail server
properties.setProperty("mail.smtp.host", host); // Get the default
Session object Session session = Session.getDefaultInstance(properties);
// Set response content type
response.setContentType("text/html"); PrintWriter out
response.getWriter(); try{ // Create a default MimeMessage
object MimeMessage message = new MimeMessage(session); //
Set From: header field of the header message.setFrom(new
InternetAddress(from)); // Set To: header field of the header
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to)); // Set Subject: header field
message.setSubject("This is the Subject Line!"); // Send the actual
HTML message, as big as you like message.setContent("<h1>This is
actual message</h1>", "text/html" ); //
Send message Transport.send(message); String title = "Send
Email"; String res = "Sent message successfully "; String
docType = "<!doctype html public \"-//w3c//dtd html 4.0 "
"transitional//en\">\n"; out.println(docType + "<html>\n"
"<head><title>" title + "</title></head>\n" "<body
bgcolor=\"#f0f0f0\">\n" "<h1 align=\"center\">" title + "</h1>\n"
+ "<p align=\"center\">" res + "</p>\n"
"</body></html>"); }catch MessagingException mex) {
mex.printStackTrace(); } } }
Biên dịch và chạy Servlet trên để gửi thông báo HTML trên một Email ID đã cho
Gửi Email với đính kèm trong Servlet
Ví dụ sau để gửi một Email với Attachment từ thiết bị của bạn bởi sử dụng Servlet Giả
sửlocalhost của bạn kết nối internet và có khả năng để gửi một Email
Trang 4// File Name SendEmail.java import java.io.*; import java.util.*; import
javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import
javax.mail.internet.*; import javax.activation.*; public class SendEmail
extends HttpServlet{ public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{ // Recipient's email ID needs to be mentioned String to = "abcd@gmail.com"; // Sender's email ID needs to be mentioned
String from "web@gmail.com"; // Assuming you are sending email from localhost String host = "localhost"; // Get system properties
Properties properties = System.getProperties(); // Setup mail server
properties.setProperty("mail.smtp.host", host); // Get the default Session object Session session = Session.getDefaultInstance(properties);
// Set response content type
response.setContentType("text/html"); PrintWriter out response.getWriter(); try{ // Create a default MimeMessage object MimeMessage message = new MimeMessage(session); //
Set From: header field of the header message.setFrom(new InternetAddress(from)); // Set To: header field of the header
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to)); // Set Subject: header field
message.setSubject("This is the Subject Line!"); // Create the message part BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message messageBodyPart.setText("This is message body");
// Create a multipar message Multipart multipart = new MimeMultipart(); // Set text message part
multipart.addBodyPart(messageBodyPart); // Part two is attachment
messageBodyPart = new MimeBodyPart(); String filename = "file.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart); // Send the complete message parts message.setContent(multipart ); // Send message
Transport.send(message); String title = "Send Email"; String res = "Sent message successfully "; String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 "
"transitional//en\">\n"; out.println(docType + "<html>\n"
"<head><title>" title + "</title></head>\n" "<body bgcolor=\"#f0f0f0\">\n" "<h1 align=\"center\">" title + "</h1>\n" + "<p align=\"center\">" res + "</p>\n"
"</body></html>"); }catch MessagingException mex) {
mex.printStackTrace(); } } }
Biên dịch và chạy Servlet trên để gửi mọt file như là một đính kèm cùng với một thông báo
trên một Email ID đã cho
Phần User Authentication
Nếu cần thiết để cung cấp User ID và Password để gửi Email đó tới Server cho mục đích
xác nhận, thì bạn có thể thiết lập các thuộc tính như sau:
Trang 5props.setProperty("mail.user", "myuser"); props.setProperty("mail.password",
"mypwd");
Phần còn lại của kỹ thuật gửi Email là tương tự như ví dụ trên