JSP - Gửi Email
Trong chương này, chúng ta sẽ thảo luận về cách gửi email bằng JSP. Để gửi email bằng JSP, bạn phải cóJavaMail API và Java Activation Framework (JAF) được cài đặt trên máy của bạn.
Bạn có thể tải xuống phiên bản mới nhất của JavaMail (Phiên bản 1.2) từ trang web chuẩn của Java.
Bạn có thể tải xuống phiên bản mới nhất của JavaBeans Activation Framework JAF (Phiên bản 1.0.2) từ trang web chuẩn của Java.
Tải xuống và giải nén các tệp này trong thư mục cấp cao nhất mới được tạo. Bạn sẽ tìm thấy một số tệp jar cho cả hai ứng dụng. Bạn cần thêmmail.jar và activation.jar các tệp trong CLASSPATH của bạn.
Gửi một email đơn giản
Đây là một ví dụ để gửi một email đơn giản từ máy của bạn. Người ta cho rằnglocalhostđược kết nối với Internet và nó có đủ khả năng để gửi email. Đảm bảo rằng tất cả các tệp jar từ gói Java Email API và gói JAF đều 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 = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// 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ờ chúng ta hãy đặt đoạn mã trên vào SendEmail.jsp tệp và gọi JSP này bằng cách sử dụng URL http://localhost:8080/SendEmail.jsp. Điều này sẽ giúp gửi email đến ID email đã cho[email protected]. Bạn sẽ nhận được phản hồi sau:
Send Email using JSP
Result: Sent message successfully....
Nếu bạn muốn gửi email đến nhiều người nhận, hãy sử dụng các phương pháp sau để chỉ định nhiều ID email:
void addRecipients(Message.RecipientType type, Address[] addresses)
throws MessagingException
Đây là mô tả của các tham số -
type- Điều này sẽ được đặt thành TO, CC hoặc BCC. Ở đây CC đại diện cho Bản sao carbon và BCC đại diện cho Bản sao carbon đen. Ví dụ Message.RecipientType.TO
addresses- Đây là mảng ID email. Bạn sẽ cần sử dụng phương thức InternetAddress () trong khi chỉ định các ID email
Gửi Email HTML
Đây là một ví dụ để gửi một email HTML từ máy của bạn. Người ta cho rằnglocalhostđược kết nối với Internet và nó có đủ khả năng để gửi email. Đảm bảo tất cả các tệp jar từJava Email API package và JAF package có sẵn trong CLASSPATH.
Ví dụ này rất giống với ví dụ trước, ngoại trừ việc ở đây chúng tôi đang sử dụng setContent() phương pháp đặt nội dung có đối số thứ hai là "text/html" để xác định rằng nội dung HTML được bao gồm trong thư.
Sử dụng ví dụ này, bạn có thể gửi nội dung HTML lớn như bạn yêu cầu.
<%@ 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 = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// 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ờ chúng ta hãy sử dụng JSP ở trên để gửi tin nhắn HTML trên một ID email nhất định.
Gửi tệp đính kèm trong email
Sau đây là một ví dụ để gửi một email có tệp đính kèm từ máy của bạn -
<%@ 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 = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// 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 multipart 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 Attachment Email using JSP</title>
</head>
<body>
<center>
<h1>Send Attachment Email using JSP</h1>
</center>
<p align = "center">
<%out.println("Result: " + result + "\n");%>
</p>
</body>
</html>
Bây giờ chúng ta hãy chạy JSP ở trên để gửi một tệp dưới dạng tệp đính kèm cùng với một thông báo trên một ID email nhất định.
Phần xác thực người dùng
Nếu bắt buộc phải cung cấp ID người dùng và Mật khẩu cho máy chủ email để xác thực, bạn có thể đặt các thuộc tính này như sau:
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
Phần còn lại của cơ chế gửi email sẽ vẫn như được giải thích ở trên.
Sử dụng biểu mẫu để gửi email
Bạn có thể sử dụng biểu mẫu HTML để chấp nhận các tham số email và sau đó bạn có thể sử dụng request đối tượng để lấy 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");
Sau khi bạn có tất cả thông tin, bạn có thể sử dụng các chương trình nêu trên để gửi email.