Java - Envío de correo electrónico
Enviar un correo electrónico utilizando su aplicación Java es bastante simple, pero para empezar debe tener JavaMail API y Marco de activación de Java (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 JAF (Versión 1.1.1) desde el sitio web estándar de Java.
Descargue y descomprima estos archivos, en los directorios de nivel superior recién creados encontrará una serie de archivos jar para ambas aplicaciones. Debe agregar mail.jar y activación.jar archivos en su CLASSPATH.
Envíe un correo electrónico sencillo
Aquí hay un ejemplo para enviar un correo electrónico simple desde su máquina. Se supone que su localhost está conectado a Internet y tiene la capacidad suficiente para enviar un correo electrónico.
Ejemplo
// File Name SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // 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 Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // 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); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compile y ejecute este programa para enviar un correo electrónico simple −
Salida
$ java SendEmail Sent message successfully....
Si desea enviar un correo electrónico a varios destinatarios, se utilizarán los siguientes métodos para especificar varias ID de correo electrónico:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Aquí está la descripción de los parámetros −
-
tipo − Esto se establecería en TO, CC o BCC. Aquí CC representa Carbon Copy y BCC representa Black Carbon Copy. Ejemplo:Mensaje.TipoDestinatario.TO
-
direcciones − Esta es una matriz de ID de correo electrónico. Deberá utilizar el método InternetAddress() al especificar los ID de correo electrónico.
Enviar un correo electrónico HTML
Aquí hay un ejemplo para enviar un correo electrónico HTML desde su máquina. Aquí se supone que su localhost está conectado a Internet y tiene la capacidad suficiente para enviar un correo electrónico.
Este ejemplo es muy similar al anterior, excepto que aquí estamos usando el método setContent() para establecer contenido cuyo segundo argumento es "text/html" para especificar que el contenido HTML se incluye en el mensaje.
Con este ejemplo, puede enviar contenido HTML tan grande como desee.
Ejemplo
// File Name SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // 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 Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // 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); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compile y ejecute este programa para enviar un correo electrónico HTML −
Salida
$ java SendHTMLEmail Sent message successfully....
Enviar archivo adjunto por correo electrónico
Aquí hay un ejemplo para enviar un correo electrónico con un archivo adjunto desde su máquina. Aquí se supone que su localhost está conectado a Internet y tiene la capacidad suficiente para enviar un correo electrónico.
Ejemplo
// File Name SendFileEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // 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 Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // 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 multipar 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); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compile y ejecute este programa para enviar un correo electrónico HTML −
Salida
$ java SendFileEmail Sent message successfully....
Parte de autenticación de usuario
Si es necesario proporcionar el 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ía como se explicó anteriormente.
Java