Aunque es muy sencillo utilizar JSP para enviar correos electrónicos, requiere la instalación de la API JavaMail y el marco de activación JavaBean.
Descargue la última versión de JavaMail aquí.
Descargue la última versión de JavaBeans Activation Framework (JAF) aquí.
Descargue y descomprima estos archivos. En el directorio raíz, verá una serie de paquetes jar. Agregue el paquete mail.jar y el paquete enable.jar a la variable CLASSPATH.
Este ejemplo muestra cómo enviar un correo electrónico simple desde su máquina. Se supone que localhost está conectado a la red y tiene la capacidad de enviar un correo electrónico. Al mismo tiempo, confirme nuevamente que el paquete mail.jar y el paquete enable.jar se hayan agregado a la variable CLASSPATH.
<%@ página import="java.io.*,java.util.*,javax.mail.*"%><%@ página import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // Cadena de correo electrónico del destinatario a = "[email protected]" // Enviar cadena de correo electrónico del remitente desde = "[email protected]"; // Supongamos que está enviando correo electrónico desde el host local String host = "localhost"; // Obtenga el objeto de propiedades del sistema Properties properties = System.getProperties() // Establezca las propiedades del servidor de correo.setProperty ( "mail.smtp.host", host); // Obtiene el objeto de sesión predeterminado. Sesión mailSession = Session.getDefaultInstance(properties); try{ // Crea un objeto MimeMessage predeterminado. MimeMessage message = new MimeMessage(mailSession); // Establece el campo de encabezado de De: header message.setFrom(new InternetAddress(from)); // Establece el campo de encabezado de Para: header message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Establecer asunto: campo de encabezado message.setSubject("¡Esta es la línea de asunto!"); Ahora configure el mensaje real message.setText("Este es el mensaje real"); // Enviar mensaje Transport.send(message); resultado = "Mensaje enviado correctamente..."; (); resultado = "Error: no se puede enviar el mensaje..."; JSP</title></head><body><center><h1>Enviar correo electrónico usando JSP</h1></center><p align="center"><% out.println("Resultado: " + resultado + "n"); %></p></body></html>
Ahora visite http://localhost:8080/SendEmail.jsp, enviará un correo electrónico a [email protected] y mostrará los siguientes resultados:
Enviar correo electrónico usando JSPResultado: mensaje enviado correctamente....Si desea enviar un correo electrónico a varias personas, se pueden utilizar los métodos que se enumeran a continuación para especificar varias direcciones de correo electrónico:
void addRecipients (tipo Message.RecipientType, dirección [] direcciones) lanza MessagingExceptionLos parámetros se describen a continuación:
tipo: este valor se establecerá en TO, CC o BCC. CC significa copia, BCC significa copia en negro y TO se utiliza en el programa de ejemplo.
direcciones: Esta es una matriz de direcciones de correo electrónico. Al especificar una dirección de correo electrónico, debe utilizar el método InternetAddress().
Este ejemplo envía un correo electrónico HTML simple. Se supone que su host local está conectado a la red y tiene la capacidad de enviar correo. Al mismo tiempo, confirme nuevamente que el paquete mail.jar y el paquete enable.jar se hayan agregado a la variable CLASSPATH.
Este ejemplo es muy similar al ejemplo anterior, pero en este ejemplo usamos el método setContent() y pasamos "text/html" como segundo parámetro para indicar que el mensaje contiene contenido HTML.
<%@ página import="java.io.*,java.util.*,javax.mail.*"%><%@ página import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // Cadena de correo electrónico del destinatario a = "[email protected]" // Enviar cadena de correo electrónico del remitente desde = "[email protected]"; // Supongamos que está enviando correo electrónico desde el host local String host = "localhost"; // Obtenga el objeto de propiedades del sistema Properties properties = System.getProperties() // Establezca las propiedades del servidor de correo.setProperty ( "mail.smtp.host", host); // Obtiene el objeto de sesión predeterminado. Sesión mailSession = Session.getDefaultInstance(properties); try{ // Crea un objeto MimeMessage predeterminado. MimeMessage message = new MimeMessage(mailSession); // Establece el campo de encabezado de De: header message.setFrom(new InternetAddress(from)); // Establece el campo de encabezado de Para: header message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Establecer asunto: campo de encabezado message.setSubject("¡Esta 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 = "Mensaje enviado correctamente...." ; }catch (MessagingException mex) { mex.printStackTrace(); resultado = "Error: no se puede enviar el mensaje..."; JSP</title></head><body><center><h1>Enviar correo electrónico usando JSP</h1></center><p align="center"><% out.println("Resultado: " + resultado + "n"); %></p></body></html>
Ahora puede intentar utilizar el archivo JSP anterior para enviar un mensaje HTML a un correo electrónico.
Este ejemplo nos muestra cómo enviar un correo electrónico que contiene un archivo adjunto.
<%@ página import="java.io.*,java.util.*,javax.mail.*"%><%@ página import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // Cadena de correo electrónico del destinatario a = "[email protected]" // Enviar cadena de correo electrónico del remitente desde = "[email protected]"; // Supongamos que está enviando correo electrónico desde el host local String host = "localhost"; // Obtenga el objeto de propiedades del sistema Properties properties = System.getProperties() // Establezca las propiedades del servidor de correo.setProperty ( "mail.smtp.host", host); // Obtiene el objeto de sesión predeterminado. Sesión mailSession = Session.getDefaultInstance(properties); try{ // Crea un objeto MimeMessage predeterminado. MimeMessage message = new MimeMessage(mailSession); // Establece el campo de encabezado de De: header message.setFrom(new InternetAddress(from)); // Establece el campo de encabezado de Para: header message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); //Establece el Asunto: campo de encabezado message.setSubject("¡Esta es la línea de asunto!"); messageBodyPart = new MimeBodyPart(); // Completa el mensaje messageBodyPart.setText("Este es el cuerpo del mensaje"); // Crea un mensaje multimedia Multipart multipart = new MimeMultipart() // Establece la parte del mensaje de texto multipart.addBodyPart( messageBodyPart); // Parte adjunta messageBodyPart = new MimeBodyPart(); String filename = "file.txt" fuente; new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Enviar el mensaje completo message.setContent(multipart); .send (mensaje); String title = "Enviar correo electrónico"; resultado = "Mensaje enviado correctamente..."; (MessagingException mex) { mex.printStackTrace(); resultado = "Error: no se puede enviar el mensaje..."; } %><html><head><title>Enviar correo electrónico adjunto usando JSP</title></head ><body><center><h1>Enviar correo electrónico adjunto mediante JSP</h1></center><p align="center"><% out.println("Resultado: " + resultado + "n"); %></p></body></html>
Si el servidor de correo requiere un nombre de usuario y contraseña para la autenticación del usuario, se puede configurar de la siguiente manera:
props.setProperty("correo.usuario", "miusuario"); props.setProperty("correo.contraseña", "micontraseña");Utilice un formulario HTML para recibir un correo electrónico y obtener toda la información del correo electrónico a través del objeto de solicitud:
String to = request.getParameter("to");String from = request.getParameter("from");String asunto = request.getParameter("subject");String messageText = request.getParameter("body");Una vez que tenga la información anterior, puede enviar el correo electrónico utilizando el ejemplo mencionado anteriormente.