JSP - wysyłanie wiadomości e-mail
W tym rozdziale omówimy wysyłanie wiadomości e-mail za pomocą JSP. Aby wysłać wiadomość e-mail za pomocą strony JSP, powinieneś mieć rozszerzenieJavaMail API i Java Activation Framework (JAF) zainstalowany na twoim komputerze.
Najnowszą wersję oprogramowania JavaMail (wersja 1.2) można pobrać ze standardowej witryny internetowej języka Java.
Możesz pobrać najnowszą wersję JavaBeans Activation Framework JAF (wersja 1.0.2) ze standardowej witryny Java.
Pobierz i rozpakuj te pliki w nowo utworzonych katalogach najwyższego poziomu. Znajdziesz wiele plików jar dla obu aplikacji. Musisz dodaćmail.jar i activation.jar pliki w CLASSPATH.
Wyślij prostą wiadomość e-mail
Oto przykład wysyłania prostego e-maila z komputera. Zakłada się, że twójlocalhostjest podłączony do Internetu i może wysłać wiadomość e-mail. Upewnij się, że wszystkie pliki jar z pakietu Java Email API i pakietu JAF są dostępne w 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>
Umieśćmy teraz powyższy kod SendEmail.jsp plik i wywołaj tę stronę JSP, używając adresu URL http://localhost:8080/SendEmail.jsp. Pomoże to wysłać wiadomość e-mail na podany identyfikator e-mail[email protected]. Otrzymasz następującą odpowiedź -
Send Email using JSP
Result: Sent message successfully....
Jeśli chcesz wysłać wiadomość e-mail do wielu odbiorców, użyj następujących metod, aby określić wiele identyfikatorów e-mail -
void addRecipients(Message.RecipientType type, Address[] addresses)
throws MessagingException
Oto opis parametrów -
type- To byłoby ustawione na TO, CC lub BCC. Tutaj CC oznacza Carbon Copy, a BCC reprezentuje Black Carbon Copy. Przykład Message.RecipientType.TO
addresses- To jest tablica identyfikatorów e-mail. Podczas określania identyfikatorów adresów e-mail należy użyć metody InternetAddress ()
Wyślij e-mail w formacie HTML
Oto przykład wysyłania wiadomości e-mail w formacie HTML z komputera. Zakłada się, że twójlocalhostjest podłączony do Internetu i może wysłać wiadomość e-mail. Upewnij się, że wszystkie pliki jar zJava Email API package i JAF package są dostępne w CLASSPATH.
Ten przykład jest bardzo podobny do poprzedniego, z tym że tutaj używamy setContent() do ustawienia treści, której drugim argumentem jest "text/html" aby określić, że treść HTML jest dołączona do wiadomości.
Korzystając z tego przykładu, możesz wysłać tak dużą zawartość HTML, jak potrzebujesz.
<%@ 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>
Użyjmy teraz powyższego JSP do wysłania wiadomości HTML na podany identyfikator e-mail.
Wyślij załącznik e-mailem
Poniżej znajduje się przykład wysyłania wiadomości e-mail z załącznikiem z komputera -
<%@ 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>
Uruchommy teraz powyższą stronę JSP, aby wysłać plik jako załącznik wraz z wiadomością o podanym identyfikatorze e-mail.
Część dotycząca uwierzytelniania użytkownika
Jeśli wymagane jest podanie identyfikatora użytkownika i hasła do serwera poczty e-mail w celu uwierzytelnienia, możesz ustawić te właściwości w następujący sposób -
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
Reszta mechanizmu wysyłania wiadomości e-mail pozostanie, jak wyjaśniono powyżej.
Używanie formularzy do wysyłania wiadomości e-mail
Możesz użyć formularza HTML, aby zaakceptować parametry wiadomości e-mail, a następnie możesz użyć request sprzeciwić się uzyskaniu wszystkich informacji w następujący sposób -
String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");
Gdy masz już wszystkie informacje, możesz użyć wyżej wymienionych programów do wysyłania wiadomości e-mail.