Để gửi một Email bởi sử dụng một JSP là khá đơn giản. Nhưng trước hết bạn cần cài đặt JavaMail API và Java Activation Framework (JAF) trên thiết bị.
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.
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ằng localhost 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.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "mcmohd@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties object
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session mailSession = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(mailSession);
// 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);
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>
Bây giờ, đặt code trên trong SendEmail.jsp file và gọi JSP này bởi sử dụng địa chỉ URL là http://localhost:8080/SendEmail.jsp, mà sẽ gửi một Email tới Email ID đã cho là abcd@gmail.com và sẽ hiển thị phản hồi sau:
Send Email using JSP
Result: 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ố:
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 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.
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.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "mcmohd@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties object
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session mailSession = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(mailSession);
// 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);
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>
Bây giờ, thử sử dụng JSP trên để gửi thông báo HTML trên một Email ID đã cho.
Đây là ví dụ để gửi Email cùng với một đính kèm từ thiết bị của bạn trong JSP:
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "mcmohd@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties object
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session mailSession = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(mailSession);
// 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";
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>
Thử chạy JSP trên để gửi một file như là một Attachment cùng với một thông báo trên một Email ID đã cho.
Nếu cần thiết để cung cấp User ID và Password tới Email server cho mục đích xác nhận (authentication) thì bạn có thể thiết lập các thuộc tính này như sau:
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
Rest of the email sending mechanism would remain as explained above.
Bạn có thể sử dụng HTML form để chấp nhận các tham số của email và sau đó bạn có thể sử dụng đối tượng request để nhận tất cả thông tin đó như sau:
String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");
Khi bạn có tất cả thông tin trên, bạn có thể sử dụng các chương trình đã đề cập để gửi email.
Unpublished comment
Viết câu trả lời