JSP: envío de correo electrónico
En este capítulo, discutiremos cómo enviar correos electrónicos usando JSP. Para enviar un correo electrónico usando una JSP, debe tener elJavaMail API y el Java Activation Framework (JAF) instalado en su máquina.
Puede descargar la última versión de JavaMail (Versión 1.2) desde el sitio web estándar de Java.
Puede descargar la última versión de JavaBeans Activation Framework JAF (Versión 1.0.2) desde el sitio web estándar de Java.
Descargue y descomprima estos archivos, en los directorios de nivel superior recién creados. Encontrará varios archivos jar para ambas aplicaciones. Necesitas agregar elmail.jar y el activation.jar archivos en su CLASSPATH.
Envíe un correo electrónico simple
A continuación se muestra un ejemplo para enviar un correo electrónico simple desde su máquina. Se supone que sulocalhostestá conectado a Internet y tiene la capacidad suficiente para enviar un correo electrónico. Asegúrese de que todos los archivos jar del paquete Java Email API y el paquete JAF estén disponibles en 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>
Pongamos ahora el código anterior en SendEmail.jsp archivo y llame a esta JSP usando la URL http://localhost:8080/SendEmail.jsp. Esto ayudará a enviar un correo electrónico al ID de correo electrónico proporcionado.[email protected]. Recibirá la siguiente respuesta:
Send Email using JSP
Result: Sent message successfully....
Si desea enviar un correo electrónico a varios destinatarios, utilice los siguientes métodos para especificar varios ID de correo electrónico:
void addRecipients(Message.RecipientType type, Address[] addresses)
throws MessagingException
Aquí está la descripción de los parámetros:
type- Esto se establecería en TO, CC o BCC. Aquí CC representa Carbon Copy y BCC representa Black Carbon Copy. Ejemplo Message.RecipientType.TO
addresses- Esta es la matriz de ID de correo electrónico. Debería utilizar el método InternetAddress () mientras especifica las ID de correo electrónico
Enviar un correo electrónico HTML
A continuación se muestra un ejemplo para enviar un correo electrónico HTML desde su máquina. Se supone que sulocalhostestá conectado a Internet y tiene la capacidad suficiente para enviar un correo electrónico. Asegúrese de que todos los archivos jar delJava Email API package y el JAF package están disponibles en CLASSPATH.
Este ejemplo es muy similar al anterior, excepto que aquí estamos usando el setContent() método para establecer contenido cuyo segundo argumento es "text/html" para especificar que el contenido HTML está incluido en el mensaje.
Con este ejemplo, puede enviar un contenido HTML tan grande como necesite.
<%@ 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>
Usemos ahora el JSP anterior para enviar un mensaje HTML en una ID de correo electrónico determinada.
Enviar archivo adjunto por correo electrónico
A continuación se muestra un ejemplo para enviar un correo electrónico con un archivo adjunto desde su máquina:
<%@ 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>
Ejecutemos ahora el JSP anterior para enviar un archivo como archivo adjunto junto con un mensaje en una ID de correo electrónico determinada.
Parte de autenticación de usuario
Si es necesario proporcionar la ID de usuario y la contraseña al servidor de correo electrónico con fines de autenticación, puede configurar estas propiedades de la siguiente manera:
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
El resto del mecanismo de envío de correo electrónico permanecerá como se explicó anteriormente.
Uso de formularios para enviar correo electrónico
Puede usar el formulario HTML para aceptar los parámetros de correo electrónico y luego puede usar el request objeto para obtener toda la información de la siguiente manera:
String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");
Una vez que tenga toda la información, puede utilizar los programas antes mencionados para enviar correo electrónico.