English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

发送邮件JSP

Aunque es fácil implementar la función de envío de correo electrónico utilizando JSP, se necesita el API JavaMail y se debe instalar el JavaBean Activation Framework.

  • Puede descargar la última versión de Java desde el sitio web de Java JavaMail, abra la página de la derecha hay un Descargas haga clic en él para descargar.

  • Puede descargar la última versión de Java desde el sitio web de Java JAF (versión 1.1.1).

Descargue y descomprima estos archivos, en la carpeta raíz, verá una serie de paquetes jar. Añada el paquete mail.jar y el paquete activation.jar a la variable de entorno CLASSPATH.

Enviar un correo electrónico simple

Este ejemplo muestra cómo enviar un correo electrónico simple desde su máquina. Supone que localhost ya está conectado a la red y tiene la capacidad de enviar un correo electrónico. Al mismo tiempo, asegúrese de que el paquete mail.jar y el paquete activation.jar ya se han añadido a la variable de entorno 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;
   // Correo electrónico del destinatario
   String to = "[email protected]";
   // Correo electrónico del remitente
   String from = "[email protected]";
   // Supongamos que estás enviando un correo electrónico desde el host local
   String host = "localhost";
   // Obtener el objeto de propiedades del sistema
   Properties properties = System.getProperties();
   // Configurar el servidor de correo
   properties.setProperty("mail.smtp.host", host);
   // Obtener el objeto Session predeterminado.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Crear un objeto MimeMessage predeterminado.
      MimeMessage message = new MimeMessage(mailSession);
      // Establecer campo de encabezado From:
      message.setFrom(new InternetAddress(from));
      // Establecer campo de encabezado To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Establecer campo de encabezado Subject:
      message.setSubject("¡Este es la Línea de Asunto!");
      // Ahora está configurado el mensaje real
      message.setText("Este es el mensaje real");
      // Enviar mensaje
      Transport.send(message);
      result = "Mensaje enviado con éxito....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: No se pudo enviar el mensaje....";
   }
%>
<html>
<head>
<title>Enviar correo electrónico utilizando JSP</title>
</head>
<body>
<center>
<h1>Enviar correo electrónico usando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Ahora acceda a http://localhost:8080/SendEmail.jsp, que enviará un correo electrónico a [email protected] y mostrará el siguiente resultado:

Enviar correo electrónico utilizando JSP
Resultado: Mensaje enviado con éxito....

Si desea enviar un correo electrónico a varias personas, los métodos enumerados a continuación se pueden usar para especificar múltiples direcciones de correo electrónico:

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
lanza MessagingException

La descripción de los parámetros es la siguiente:

  • type: Este valor se establecerá en TO (destinatario), CC o BCC. CC significa Carbon Copy (copia carbónica), BCC significa Carbon Copy Ciego (copia carbónica ciega). El ejemplo de programa utiliza TO.

  • addresses: Esto es un array de direcciones de correo electrónico, cuando se especifica una dirección de correo electrónico, se debe usar el método InternetAddress().

Enviar un correo electrónico HTML

Este ejemplo envía un correo electrónico HTML simple. Supone que su localhost ya está conectado a la red y tiene la capacidad de enviar correos electrónicos. Al mismo tiempo, asegúrese de que el paquete mail.jar y el paquete activation.jar ya se han añadido a la variable de entorno CLASSPATH.

Esta instancia es muy similar a la anterior, pero en esta ocasión utilizamos el método setContent(), pasando "text/html" como segundo parámetro para indicar que el mensaje contiene contenido HTML.

<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
   String result;
   // Correo electrónico del destinatario
   String to = "[email protected]";
   // Correo electrónico del remitente
   String from = "[email protected]";
   // Supongamos que estás enviando un correo electrónico desde el host local
   String host = "localhost";
   // Obtener el objeto de propiedades del sistema
   Properties properties = System.getProperties();
   // Configurar el servidor de correo
   properties.setProperty("mail.smtp.host", host);
   // Obtener el objeto Session predeterminado.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Crear un objeto MimeMessage predeterminado.
      MimeMessage message = new MimeMessage(mailSession);
      // Establecer campo de encabezado From:
      message.setFrom(new InternetAddress(from));
      // Establecer campo de encabezado To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Establecer campo de encabezado Subject:
      message.setSubject("¡Este es la Línea de Asunto!");
     
      // Establecer mensaje HTML
      message.setContent("<h1>Este es el mensaje real</h1>",
                            "text/html" );
      // Enviar mensaje
      Transport.send(message);
      result = "Mensaje enviado con éxito....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: No se pudo enviar el mensaje....";
   }
%>
<html>
<head>
<title>Enviar correo electrónico HTML usando JSP</title>
</head>
<body>
<center>
<h1>Enviar correo electrónico usando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Ahora puedes intentar usar el archivo JSP anterior para enviar un correo electrónico con mensaje HTML.

Incluir un archivo adjunto en el correo

Esta instancia nos muestra cómo enviar un correo electrónico que contiene un archivo adjunto.

<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
   String result;
   // Correo electrónico del destinatario
   String to = "[email protected]";
   // Correo electrónico del remitente
   String from = "[email protected]";
   // Supongamos que estás enviando un correo electrónico desde el host local
   String host = "localhost";
   // Obtener el objeto de propiedades del sistema
   Properties properties = System.getProperties();
   // Configurar el servidor de correo
   properties.setProperty("mail.smtp.host", host);
   // Obtener el objeto Session predeterminado.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Crear un objeto MimeMessage predeterminado.
      MimeMessage message = new MimeMessage(mailSession);
      // Establecer campo de encabezado From:
      message.setFrom(new InternetAddress(from));
      // Establecer campo de encabezado To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Establecer campo de encabezado Subject:
      message.setSubject("¡Este es la Línea de Asunto!");
      // Crear parte de mensaje
      BodyPart messageBodyPart = new MimeBodyPart();
      // Rellenar mensaje
      messageBodyPart.setText("Este es el cuerpo del mensaje");
      
      // Crear mensaje multimedia
      Multipart multipart = new MimeMultipart();
      // Configurar parte de texto
      multipart.addBodyPart(messageBodyPart);
      // Parte adjunta
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);
      // Enviar mensaje completo
      message.setContent(multipart);
      // Enviar mensaje
      Transport.send(message);
      String title = "Enviar Correo Electrónico";
      result = "Mensaje enviado con éxito....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: No se pudo enviar el mensaje....";
   }
%>
<html>
<head>
<title>Enviar Adjunto de Correo Electrónico utilizando JSP</title>
</head>
<body>
<center>
<h1>Enviar correo adjunto utilizando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Parte de autenticación de usuarios

Si el servidor de correo requiere nombre de usuario y contraseña para la autenticación de usuarios, puede configurarse de la siguiente manera:

 properties.setProperty("mail.user", "myuser");
 properties.setProperty("mail.password", "mypwd");

Enviar correo electrónico usando formulario

Reciba un correo electrónico utilizando un formulario HTML y obtenga toda la información del correo electrónico a través del objeto request:

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

Obtenida esta información, puede usar el ejemplo mencionado anteriormente para enviar correos electrónicos.